8Dle
Авторизация

Для каждой категории свой main.tpl

Свой main.tpl для каждой категории

Для каждой категории свой main.tpl Легко и просто.

Для того, чтобы при открытии категории обрабатывался не стандартный main.tpl а персональный, нужно немного изменить код в index.php

Вместо
$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

Недостаток - при выводе полной новости принадлежащей к нескольким категориям, она будет открыта в шаблоне первой категории по порядку.

Жмите на Кнопу ниже, или подписывайтесь!


Читайте также
  1. fooldert
    31 января 2010 18:29
    Можно проще сделать...

  2. fooldert
    31 января 2010 18:39
    Данный код вставляем в main.tpl внутри шапки
    <table width="100%" style="border: 1px solid #fff" align="center" >
    <tr>
    <td class="content"></td>
    <td id="shablon" ><h2 class="mblk_title"> </h2>{custom category="5" template="shablon" aviable="main" from="0" limit="20" cache="yes"}</td>
    <td class="content"></td>
    <td></td>
    </tr>
    </table>


    Limit-кол-во выводимых новостей
    Cache-кэширование
    Template-шаблон для данной категории
    Custom category-позиционный номер категории
    Aviable-в данном коде указано чтоб показывалось только на главной.
    и в папке с шаблоном должен быть файл shablon.tpl где будет указан шаблон данной категории...
  3. qwoz
    7 февраля 2010 06:50
    спасибо большое smile
  4. GoGa
    30 марта 2010 18:16
    реально сделать другой шаблон для определенной группы пользователей? или для определенного пользователя??
  5. bvytas
    13 сентября 2010 00:21
    Поставил этот код в index.php, всё работает,но одно но-как прикрутить к этому коду чтобы он открывал не только отдельный шаблон для категории,но и для форума и галерею
Информация
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.


Dle это движок который изначально проектировался для создания новостных сайтов, но по мере своего развития движка значительно расширил свою функциональность и стал универсальным средством разработки и сопровождения сайтов и блогов различной направленности и тематики. По сравнению с другими бесплатными (и некоторыми платными) CMS системами движок dle обладает довольно обширными возможности.

Авторизация