• DONATE to NULLED!
    Форуму и его команде можно помочь, мотивировать модераторов разделов.
    Помогите модератору этого раздела killoff лично.

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

Статус
В этой теме нельзя размещать новые ответы.

IgorA100

Постоялец
Регистрация
3 Янв 2009
Сообщения
63
Реакции
31
Для того, чтобы при открытии категории обрабатывался не стандартный 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

Недостаток - при выводе полной новости принадлежащей к нескольким категориям, она будет открыта в шаблоне первой категории по порядку. Как победить - пока х.з. :( Но оно как-то и не напрягает....
 
Чем вас не устраивает
b37b707ae7bb.png

в связке с тегами [category=X][/category]
 
Demon425
ну как минимум тем, что для твоего варианта нужно:
1) сделать отдельный шаблон в отдельной папке.
2) кроме майна там должно быть еще несколько других темполейтов даже если используется только майн темпалейт
3) если на сайте разрешена смена скина то вместо этого "укороченного" скина нужно делать полноценный скин...
продолжать? а в первом посте решение с использованием всего 1 файлабез отдельной папки к тому же шаблононезависимое.
 
Чем вас не устраивает
в связке с тегами [category=X][/category]
Во первых использовать разные шаблоны ВСЕГО сайта для разных категорий очень не удобно админить, да и излишество это
Во вторых используя теги [category=X] уже при 10 категориях получается перегруженный и трудно читаемый main.tpl, а что уже говорить о 100 категориях например?
В данном варианте достаточно сделать файл шаблона с правильным именем и он всегда "подхватится" в нужном месте...
 
извините может не в тему но допустим есть шаблон donate.tpl как сделать чтобы его можно было редактировать из админки там где стандартные шаблоны
 
Никак
(набиваю 10 символов для отправки сообщения :))
 
извините может не в тему но допустим есть шаблон donate.tpl как сделать чтобы его можно было редактировать из админки там где стандартные шаблоны


попробуй по аналогии в коде двига добавить этот шаб
 
Не первый год работаю с дле и как мне кажется, лучший вариант решения шаблона для категории, это решение от IgorA100, за что ему и спасибо :ay:
 
извините может не в тему но допустим есть шаблон donate.tpl как сделать чтобы его можно было редактировать из админки там где стандартные шаблоны

Это можно реализовать (я у себя так сделал), но много правок кода. Стучись в личку на добавления в админку одного tpl что-нибудь придумаем.
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху