X   Сообщение сайта
(Сообщение закроется через 2 секунды)

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> Блок "Категории"
Михалыч
сообщение 2009-04-21, 11:01
Сообщение #1
Любитель
Иконка группы

Группа: Дизайнеры
Сообщений: 320
Регистрация: 2008-12-13
Из: Казахстан, Жезказган, возле Байконура

Репутация:   нет  
Всего: 12


Возможно в темах был вопрос, я не нашел.

Проект почти готов но держит одно?

Немогу выставить чтоб блок категорий показывался на главной - первой странице, то есть, открыл сайт и вот они категории. Уже по разному ставил галочки, не получается. Или вообще не предусмотрено? Или я чего то недопёр.

Сообщение отредактировал Михалыч - 2009-04-21, 11:02
Перейти в начало страницы
+Цитировать сообщение
Alexander
сообщение 2009-04-21, 14:51
Сообщение #2
Eleanor developer
Иконка группы

Группа: Администраторы
Сообщений: 5 261
Регистрация: 2008-11-11
Из: Николаев
Версия системы: RC5

Репутация:   нет  
Всего: 67


Михалыч, все проще. Откройте файл блока (/addons/blocks/block_categories.php) и закооментируйте строки 13-16 и 111.

if ($Mainclass->GetModVal('categories_table')===false)
	$content='';
else
{
	...
	...
	...
}
Перейти в начало страницы
+Цитировать сообщение
Михалыч
сообщение 2009-04-21, 17:36
Сообщение #3
Любитель
Иконка группы

Группа: Дизайнеры
Сообщений: 320
Регистрация: 2008-12-13
Из: Казахстан, Жезказган, возле Байконура

Репутация:   нет  
Всего: 12


А вот что то не получается. Или не те строки? Фигурная закрывающаа скобка в строках 110 и 113 но не в 111, и ту и другую пробовал. По идее 113 правильно будет. Но у меня вообще не открывается сайт, если закомментировать.

Сообщение отредактировал Михалыч - 2009-04-21, 17:38
Перейти в начало страницы
+Цитировать сообщение
Alexander
сообщение 2009-04-21, 17:44
Сообщение #4
Eleanor developer
Иконка группы

Группа: Администраторы
Сообщений: 5 261
Регистрация: 2008-11-11
Из: Николаев
Версия системы: RC5

Репутация:   нет  
Всего: 67


if (!defined('CMS'))
	die('Попытка взлома?');
#if ($Mainclass->GetModVal('categories_table')===false)
#	$content='';
#else
#{
	$content=&#39;<ul class="blockcategories">&#39;;
	$temp_parent=0;
	$temp_text=&#39;&#39;;
	$div=&#39;<ul id="cats-&#39;.$Mainclass->GetModVal(&#39;name&#39;).&#39;-{id}" style="display: {disp}; padding-left: 20px;"><!-- cat_{id} --></ul>&#39;;
	$image=&#39;<img src="images/icons/{type}.gif" border="0" id="image-&#39;.$Mainclass->GetModVal(&#39;name&#39;).&#39;-{id}" onclick="SwitchCategory(\&#39;{id}\&#39;,\&#39;&#39;.$Mainclass->GetModVal(&#39;name&#39;).&#39;\&#39;);" style="cursor: pointer;" alt="{cnt} ->" title="{cnt} ->" />&#39;;
	$module=$Mainclass->GetModVal(&#39;name&#39;) ? $Mainclass->GetModVal(&#39;name&#39;) : &#39;news&#39;;
	$cat_table=$Mainclass->GetModVal(&#39;general&#39;) ? &#39;news_categories&#39; : &#39;&#39;;
	$url_prefix=$Mainclass->Url->DynamicBegin().$Mainclass->Url->ConstructUrl(array(&#39;module&#39;=>$module),false,false);
	$old_ending=$Mainclass->Url->ending;
	$Mainclass->Url->ending=&#39;/&#39;;
	if ($Mainclass->GetModVal(&#39;multilang&#39;))
	{
		if (!isset($Mainclass->Categories_l))
		{
			$Mainclass->LoadClass(&#39;classes/others/class_categories_l.php&#39;);
			$Mainclass->Categories_l->Init();
		}
		$Cat=$Mainclass->Categories_l;
	}
	else
	{
		if (!isset($Mainclass->Categories))
		{
			$Mainclass->LoadClass(&#39;classes/others/class_categories.php&#39;);
			$Mainclass->Categories->Init();
		}
		$Cat=$Mainclass->Categories;
	}
	foreach($Cat->dump as &$v)
	{
		$cnt=floor(($v[&#39;r&#39;]-$v[&#39;l&#39;])/2);
		if ($v[&#39;parent&#39;]!=$temp_parent)
		{
			if (strpos($content,&#39;<!-- cat_&#39;.$temp_parent.&#39; -->&#39;)!==false)
				$content=str_replace(&#39;<!-- cat_&#39;.$temp_parent.&#39; -->&#39;,$temp_text.&#39;<!-- cat_&#39;.$temp_parent.&#39; -->&#39;,$content);
			else
				$content.=$temp_text;
			$temp_text=&#39;&#39;;
			$temp_parent=$v[&#39;parent&#39;];
		}
		if ($cnt>0)
		{
			if ($Mainclass->GCookie(&#39;cats-&#39;.$Mainclass->GetModVal(&#39;name&#39;).&#39;-&#39;.$v[&#39;id&#39;])==&#39;true&#39;)
			{
				$disp=&#39;block&#39;;
				$ENGINE=&#39;minus&#39;;
			}
			else
			{
				$disp=&#39;none&#39;;
				$type=&#39;plus&#39;;
			}
			$begin=&#39;<li class="subcat">&#39;.str_replace(
										array(
												&#39;{id}&#39;,
												&#39;{cnt}&#39;,
												&#39;{type}&#39;
										),
										array(
												$v[&#39;id&#39;],
												$cnt,
												$type
										),
										$image
			).&#39; &#39;;
			$this_div=str_replace(
									array(
											&#39;{id}&#39;,
											&#39;{disp}&#39;
									),
									array(
											$v[&#39;id&#39;],
											$disp
									),
									$div
			);
		}
		else
		{
			$this_div=&#39;&#39;;
			$begin=&#39;<li>&#39;;
		}
		$temp_text.=$begin.&#39;<a href="&#39;.$Cat->CategoryUrl($v[&#39;id&#39;],$cat_table,$url_prefix).&#39;" title="&#39;.strip_tags($v[&#39;description&#39;]).&#39;">&#39;.$v[&#39;title&#39;].&#39;</a>&#39;.$this_div.&#39;</li>&#39;;
	}
	$Mainclass->Url->ending=$old_ending;
	if (!empty($temp_text))
	{
		if (strpos($content,&#39;<!-- cat_&#39;.$temp_parent.&#39; -->&#39;)!=false)
			$content=str_replace(&#39;<!-- cat_&#39;.$temp_parent.&#39; -->&#39;,$temp_text,$content);
		else
			$content.=$temp_text;
	}
	$content.=&#39;</ul>&#39;;
	$content=Strings::AddJs(&#39;js/block_categories.js&#39;).Strings::ScriptText($content);
#}
Перейти в начало страницы
+Цитировать сообщение
Михалыч
сообщение 2009-04-21, 18:02
Сообщение #5
Любитель
Иконка группы

Группа: Дизайнеры
Сообщений: 320
Регистрация: 2008-12-13
Из: Казахстан, Жезказган, возле Байконура

Репутация:   нет  
Всего: 12


Да, именно так и делал.
Перейти в начало страницы
+Цитировать сообщение
Alexander
сообщение 2009-04-21, 19:58
Сообщение #6
Eleanor developer
Иконка группы

Группа: Администраторы
Сообщений: 5 261
Регистрация: 2008-11-11
Из: Николаев
Версия системы: RC5

Репутация:   нет  
Всего: 67


И не работает? Точно?
Перейти в начало страницы
+Цитировать сообщение
Михалыч
сообщение 2009-04-21, 20:08
Сообщение #7
Любитель
Иконка группы

Группа: Дизайнеры
Сообщений: 320
Регистрация: 2008-12-13
Из: Казахстан, Жезказган, возле Байконура

Репутация:   нет  
Всего: 12


Да, не работает. Пытался кеши чистить, тогда с админки на просмотр сайта вообще не выйти, пока не раскомментирую.
Вначале что то пошло но списка котегорий небыло а говорил что ошибка в 15 строке. И на этом всё.
======================
Перегрузил комп, была необходимость. Теперь немогу открыть страницу пока не раскомментировал.
Даже незнаю что делать. А что, у тебя работает, когда закомментить?

Сообщение отредактировал Михалыч - 2009-04-21, 21:21
Перейти в начало страницы
+Цитировать сообщение
Alexander
сообщение 2009-04-21, 22:35
Сообщение #8
Eleanor developer
Иконка группы

Группа: Администраторы
Сообщений: 5 261
Регистрация: 2008-11-11
Из: Николаев
Версия системы: RC5

Репутация:   нет  
Всего: 67


Немного поковырявшись, вроде заработало:
	$content=&#39;<ul class="blockcategories">&#39;;
	$temp_parent=0;
	$temp_text=&#39;&#39;;
	$div=&#39;<ul id="cats-&#39;.$Mainclass->GetModVal(&#39;name&#39;).&#39;-{id}" style="display: {disp}; padding-left: 20px;"><!-- cat_{id} --></ul>&#39;;
	$image=&#39;<img src="images/icons/{type}.gif" border="0" id="image-&#39;.$Mainclass->GetModVal(&#39;name&#39;).&#39;-{id}" onclick="SwitchCategory(\&#39;{id}\&#39;,\&#39;&#39;.$Mainclass->GetModVal(&#39;name&#39;).&#39;\&#39;);" style="cursor: pointer;" alt="{cnt} ->" title="{cnt} ->" />&#39;;
	$module=$Mainclass->GetModVal(&#39;name&#39;) ? $Mainclass->GetModVal(&#39;name&#39;) : &#39;news&#39;;
	$url_prefix=$Mainclass->Url->DynamicBegin().$Mainclass->Url->ConstructUrl(array(&#39;module&#39;=>$module),false,false);
	$old_ending=$Mainclass->Url->ending;
	$Mainclass->Url->ending=&#39;/&#39;;
	if ($Mainclass->GetModVal(&#39;multilang&#39;) or $Mainclass->GetModVal(&#39;general&#39;))
	{
		if (!isset($Mainclass->Categories_l))
		{
			$Mainclass->LoadClass(&#39;classes/others/class_categories_l.php&#39;);
			$Mainclass->Categories_l->Init();
		}
		$Cat=$Mainclass->Categories_l;
	}
	else
	{
		if (!isset($Mainclass->Categories))
		{
			$Mainclass->LoadClass(&#39;classes/others/class_categories.php&#39;);
			$Mainclass->Categories->Init();
		}
		$Cat=$Mainclass->Categories;
	}
	if ($Mainclass->GetModVal(&#39;general&#39;))
	{
		$tn=&#39;news_categories&#39;;
		if(strcmp($Cat->table_name,$tn)!=0)
		{
			$Cat->table_name=$tn;
			$Cat->MakeDump();
		}
	}
	foreach($Cat->dump as &$v)
	{
		$cnt=floor(($v[&#39;r&#39;]-$v[&#39;l&#39;])/2);
		if ($v[&#39;parent&#39;]!=$temp_parent)
		{
			if (strpos($content,&#39;<!-- cat_&#39;.$temp_parent.&#39; -->&#39;)!==false)
				$content=str_replace(&#39;<!-- cat_&#39;.$temp_parent.&#39; -->&#39;,$temp_text.&#39;<!-- cat_&#39;.$temp_parent.&#39; -->&#39;,$content);
			else
				$content.=$temp_text;
			$temp_text=&#39;&#39;;
			$temp_parent=$v[&#39;parent&#39;];
		}
		if ($cnt>0)
		{
			if ($Mainclass->GCookie(&#39;cats-&#39;.$Mainclass->GetModVal(&#39;name&#39;).&#39;-&#39;.$v[&#39;id&#39;])==&#39;true&#39;)
			{
				$disp=&#39;block&#39;;
				$type=&#39;minus&#39;;
			}
			else
			{
				$disp=&#39;none&#39;;
				$type=&#39;plus&#39;;
			}
			$begin=&#39;<li class="subcat">&#39;.str_replace(
										array(
												&#39;{id}&#39;,
												&#39;{cnt}&#39;,
												&#39;{type}&#39;
										),
										array(
												$v[&#39;id&#39;],
												$cnt,
												$type
										),
										$image
			).&#39; &#39;;
			$this_div=str_replace(
									array(
											&#39;{id}&#39;,
											&#39;{disp}&#39;
									),
									array(
											$v[&#39;id&#39;],
											$disp
									),
									$div
			);
		}
		else
		{
			$this_div=&#39;&#39;;
			$begin=&#39;<li>&#39;;
		}
		$temp_text.=$begin.&#39;<a href="&#39;.$Cat->CategoryUrl($v[&#39;id&#39;],$cat_table,$url_prefix).&#39;" title="&#39;.strip_tags($v[&#39;description&#39;]).&#39;">&#39;.$v[&#39;title&#39;].&#39;</a>&#39;.$this_div.&#39;</li>&#39;;
	}
	$Mainclass->Url->ending=$old_ending;
	if (!empty($temp_text))
	{
		if (strpos($content,&#39;<!-- cat_&#39;.$temp_parent.&#39; -->&#39;)!=false)
			$content=str_replace(&#39;<!-- cat_&#39;.$temp_parent.&#39; -->&#39;,$temp_text,$content);
		else
			$content.=$temp_text;
	}
	$content.=&#39;</ul>&#39;;
	$content=Strings::AddJs(&#39;js/block_categories.js&#39;).Strings::ScriptText($content);
Перейти в начало страницы
+Цитировать сообщение
Михалыч
сообщение 2009-04-21, 22:59
Сообщение #9
Любитель
Иконка группы

Группа: Дизайнеры
Сообщений: 320
Регистрация: 2008-12-13
Из: Казахстан, Жезказган, возле Байконура

Репутация:   нет  
Всего: 12


Тупо скопировал но ничего не изменилось. Ладно, отложу, устал и наверно солнечные бури шалят
Перейти в начало страницы
+Цитировать сообщение
Alexander
сообщение 2009-04-22, 17:04
Сообщение #10
Eleanor developer
Иконка группы

Группа: Администраторы
Сообщений: 5 261
Регистрация: 2008-11-11
Из: Николаев
Версия системы: RC5

Репутация:   нет  
Всего: 67


Попробуй скачать.

Прикрепленные файлы
Прикрепленные файлы  block_categories.rar ( 1.19 килобайт ) Скачиваний: 27
 
Перейти в начало страницы
+Цитировать сообщение
Михалыч
сообщение 2009-04-23, 5:44
Сообщение #11
Любитель
Иконка группы

Группа: Дизайнеры
Сообщений: 320
Регистрация: 2008-12-13
Из: Казахстан, Жезказган, возле Байконура

Репутация:   нет  
Всего: 12


Ну вот, сравнил и нашел свой косяк. Комментировал перед скобкой.

Спасибо, всё заработало как надо.
Перейти в начало страницы
+Цитировать сообщение
Михалыч
сообщение 2009-04-28, 0:11
Сообщение #12
Любитель
Иконка группы

Группа: Дизайнеры
Сообщений: 320
Регистрация: 2008-12-13
Из: Казахстан, Жезказган, возле Байконура

Репутация:   нет  
Всего: 12


Всё работает прекрасно, и категории отображаются везде но я решил вернуться к первоначальному варианту и в кодах не капаться. И потому что в категориях разделы сортируются в алфавитном порядке, что часто не желательно.
Просто напросто использую вертикальное меню, предварительно обозвав по своему. Оказывается ничего ненадо изобретать (править файл меню как в лайде), всё делается в админке. Видимо я много чего ещё недостриг в системе. Но есть и недочёты, записываю, потом выложу в одной теме.

Сообщение отредактировал Михалыч - 2009-04-28, 0:12
Перейти в начало страницы
+Цитировать сообщение
g.v.d
сообщение 2009-07-17, 10:51
Сообщение #13
Любитель
Иконка группы

Группа: Модераторы
Сообщений: 157
Регистрация: 2009-06-05
Из: Украина Киев

Репутация:   нет  
Всего: 1


Цитата (Alexander @ 22.4.2009, 17:04)
Попробуй скачать.



Можно еще раз выложить файл, а то не скачивается,
Этот файл будет работать в RC4?
Перейти в начало страницы
+Цитировать сообщение
Alexander
сообщение 2009-07-17, 16:38
Сообщение #14
Eleanor developer
Иконка группы

Группа: Администраторы
Сообщений: 5 261
Регистрация: 2008-11-11
Из: Николаев
Версия системы: RC5

Репутация:   нет  
Всего: 67


sdimas, этот файл идет в комплекте с системой!
Перейти в начало страницы
+Цитировать сообщение
Гость_shadow_*
сообщение 2009-07-27, 15:08
Сообщение #15



Гости





ой, только сейчас заметил что блок категорий умеет отрисовывать дерево.....
Alexander, если уже в "движке" ну или непосредственно в блоке есть такая скриптяка, ПЛИЗ сделай блок чтоб он отрисовывал не дерево категорий а дерево из модуля "Меню сайта", а то стандатртный блок меню вроде не чего такого не умеет (отрисовывать вложенность), а в самом модуле такой функционал есть (создавать вложенность) и получается что отрисовать его не получается )))

Сообщение отредактировал shadow - 2009-07-27, 15:10
Перейти в начало страницы
+Цитировать сообщение
Гость_mushrembo_*
сообщение 2009-07-27, 19:43
Сообщение #16



Гости





Цитата (shadow @ 27.7.2009, 16:08)
ой, только сейчас заметил что блок категорий умеет отрисовывать дерево.....
Alexander, если уже в "движке" ну или непосредственно в блоке есть такая скриптяка, ПЛИЗ сделай блок чтоб он отрисовывал не дерево категорий а дерево из модуля "Меню сайта", а то стандатртный блок меню вроде не чего такого не умеет (отрисовывать вложенность), а в самом модуле такой функционал есть (создавать вложенность) и получается что отрисовать его не получается )))

я бы еще и за то, чтоб обычные блочные меню тоже имели вложенность, но только без java, а то для поисковиков плохо
Перейти в начало страницы
+Цитировать сообщение
Alexander
сообщение 2009-07-27, 20:34
Сообщение #17
Eleanor developer
Иконка группы

Группа: Администраторы
Сообщений: 5 261
Регистрация: 2008-11-11
Из: Николаев
Версия системы: RC5

Репутация:   нет  
Всего: 67


Хорошая идея. Думаю с выходом РЦ 5 будет реализована.
Перейти в начало страницы
+Цитировать сообщение

Ответить в данную темуНачать новую тему
0 чел. читают эту тему (гостей: 0, скрытых пользователей: 0)
Пользователей: 0

 
RSS Текстовая версия 0.0478 сек.    11 запросов    GZIP включен    Сейчас: 2020-05-26, 0:36