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

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

ой, только сейчас заметил что блок категорий умеет отрисовывать дерево.....
Alexander, если уже в "движке" ну или непосредственно в блоке есть такая скриптяка, ПЛИЗ сделай блок чтоб он отрисовывал не дерево категорий а дерево из модуля "Меню сайта", а то стандатртный блок меню вроде не чего такого не умеет (отрисовывать вложенность), а в самом модуле такой функционал есть (создавать вложенность) и получается что отрисовать его не получается )))
я бы еще и за то, чтоб обычные блочные меню тоже имели вложенность, но только без java, а то для поисковиков плохо
Alexander
2009-07-27, 20:34
Хорошая идея. Думаю с выходом РЦ 5 будет реализована.
Для просмотра полной версии этой страницы, пожалуйста,
пройдите по ссылке.