- Автор темы
- #1
Для того, чтобы при открытии категории обрабатывался не стандартный main.tpl а персональный, нужно немного изменить код в index.php
Вместо
прописать:
Персональный шаблон для категории должен находиться в папке шаблона и иметь имя: main_cat.tpl, где cat - url категории.
В данном хаке просматриваются ВСЕ родительские категории на предмет наличия шаблона. В случае отсутствия - выводится main.tpl
Недостаток - при выводе полной новости принадлежащей к нескольким категориям, она будет открыта в шаблоне первой категории по порядку. Как победить - пока х.з. Но оно как-то и не напрягает....
Вместо
Код:
$tpl->load_template ( 'main.tpl' );
прописать:
Код:
$f_ = ($newsid !== 0) ? //Если вывод конкретной новости в полном формате
'main_' . $cat_info[$category_id]['alt_name'] . '.tpl' : //То берем ее шаблон
(($do == 'cat') ? 'main_' . $category . '.tpl' : 'main.tpl' ); //Если вывод категории, то берем ее шаблон, иначе - основной
if (file_exists(TEMPLATE_DIR . '/'. $f_)) { //Есть файл шаблона для конкретной категории
$catTemplate = $f_;
}else{//Нет файла шаблона для конкретной категории, припишем родительский шаблон (если у нас ПОДкатегория)
$parentid_ = $cat_info[$category_id]['parentid'];
$alt_name_cat_ = $cat_info[$parentid_]['alt_name'];
while (isset($alt_name_cat_)) //Есть имя, т.е. не вамый верх!
{
if (isset ($alt_name_cat_)&file_exists(TEMPLATE_DIR . '/'. 'main_' . $alt_name_cat_ . '.tpl')) {
$catTemplate = 'main_' . $alt_name_cat_ . '.tpl' ;
break;
}else{
$parentid_ = $cat_info[$parentid_]['parentid'];
$alt_name_cat_ = $cat_info[$parentid_]['alt_name'];
}
}
}
$catTemplate = isset ($catTemplate)&&(file_exists(TEMPLATE_DIR . '/'. $catTemplate)) ? $catTemplate : 'main.tpl'; //Проверим присутствие файла шаблона
$tpl->load_template ( $catTemplate );
Персональный шаблон для категории должен находиться в папке шаблона и иметь имя: main_cat.tpl, где cat - url категории.
В данном хаке просматриваются ВСЕ родительские категории на предмет наличия шаблона. В случае отсутствия - выводится main.tpl
Недостаток - при выводе полной новости принадлежащей к нескольким категориям, она будет открыта в шаблоне первой категории по порядку. Как победить - пока х.з. Но оно как-то и не напрягает....