CMS Eleanor - Поиск
Полная версия этой страницы: Официальный форум Eleanor CMS » Блок "Категории"
Официальный форум Eleanor CMS » Поддержка пользователей системы Eleanor CMS » Использование системы
Михалыч
Возможно в темах был вопрос, я не нашел.

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

Немогу выставить чтоб блок категорий показывался на главной - первой странице, то есть, открыл сайт и вот они категории. Уже по разному ставил галочки, не получается. Или вообще не предусмотрено? Или я чего то недопёр.
Alexander
Михалыч, все проще. Откройте файл блока (/addons/blocks/block_categories.php) и закооментируйте строки 13-16 и 111.

if ($Mainclass->GetModVal('categories_table')===false)
	$content='';
else
{
	...
	...
	...
}
Михалыч
А вот что то не получается. Или не те строки? Фигурная закрывающаа скобка в строках 110 и 113 но не в 111, и ту и другую пробовал. По идее 113 правильно будет. Но у меня вообще не открывается сайт, если закомментировать.
Alexander
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);
#}
Михалыч
Да, именно так и делал.
Alexander
И не работает? Точно?
Михалыч
Да, не работает. Пытался кеши чистить, тогда с админки на просмотр сайта вообще не выйти, пока не раскомментирую.
Вначале что то пошло но списка котегорий небыло а говорил что ошибка в 15 строке. И на этом всё.
======================
Перегрузил комп, была необходимость. Теперь немогу открыть страницу пока не раскомментировал.
Даже незнаю что делать. А что, у тебя работает, когда закомментить?
Alexander
Немного поковырявшись, вроде заработало:
	$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);
Михалыч
Тупо скопировал но ничего не изменилось. Ладно, отложу, устал и наверно солнечные бури шалят
Alexander
Попробуй скачать.
Михалыч
Ну вот, сравнил и нашел свой косяк. Комментировал перед скобкой.

Спасибо, всё заработало как надо.
Михалыч
Всё работает прекрасно, и категории отображаются везде но я решил вернуться к первоначальному варианту и в кодах не капаться. И потому что в категориях разделы сортируются в алфавитном порядке, что часто не желательно.
Просто напросто использую вертикальное меню, предварительно обозвав по своему. Оказывается ничего ненадо изобретать (править файл меню как в лайде), всё делается в админке. Видимо я много чего ещё недостриг в системе. Но есть и недочёты, записываю, потом выложу в одной теме.
g.v.d
Цитата (Alexander @ 22.4.2009, 17:04)
Попробуй скачать.



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

я бы еще и за то, чтоб обычные блочные меню тоже имели вложенность, но только без java, а то для поисковиков плохо
Alexander
Хорошая идея. Думаю с выходом РЦ 5 будет реализована.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.