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

Тема в разделе "DLE", создана пользователем IgorA100, 2 окт 2009.

Информация :
Актуальная версия DataLife Engine 11.3
( Final Release v.11.3 | Скачать DataLife Engine | Скачать 11.3 demo )
Нужно ли обновляться | Как обновиться | Изменения в шаблонах
> Нет русских символов <
[Приватная тема DLE (Все подробности в ЛС к модератору раздела)]

Версии 11.2 и ниже - уязвимы!

Локализации | F.A.Q. | Внешний вид
Правила раздела | Правила форума
Обсуждение хайда карается баном!
В каждом сообщении указывайте версию DLE, которого они касаются!
Статус темы:
Закрыта.
Модераторы: killoff
  1. IgorA100

    IgorA100 Постоялец

    Регистр.:
    3 янв 2009
    Сообщения:
    62
    Симпатии:
    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

    Недостаток - при выводе полной новости принадлежащей к нескольким категориям, она будет открыта в шаблоне первой категории по порядку. Как победить - пока х.з. :( Но оно как-то и не напрягает....
     
    Doroga_v_Nebo, AndreyKR, sirotka и 7 другим нравится это.
  2. Demon425

    Demon425

    Регистр.:
    9 июл 2008
    Сообщения:
    461
    Симпатии:
    116
    Чем вас не устраивает
    [​IMG]
    в связке с тегами [category=X][/category]
     
    acelotuse и newportal нравится это.
  3. lift

    lift Читатель

    Заблокирован
    Регистр.:
    1 июл 2007
    Сообщения:
    2.226
    Симпатии:
    1.377
    Demon425
    ну как минимум тем, что для твоего варианта нужно:
    1) сделать отдельный шаблон в отдельной папке.
    2) кроме майна там должно быть еще несколько других темполейтов даже если используется только майн темпалейт
    3) если на сайте разрешена смена скина то вместо этого "укороченного" скина нужно делать полноценный скин...
    продолжать? а в первом посте решение с использованием всего 1 файлабез отдельной папки к тому же шаблононезависимое.
     
  4. IgorA100

    IgorA100 Постоялец

    Регистр.:
    3 янв 2009
    Сообщения:
    62
    Симпатии:
    31
    Во первых использовать разные шаблоны ВСЕГО сайта для разных категорий очень не удобно админить, да и излишество это
    Во вторых используя теги [category=X] уже при 10 категориях получается перегруженный и трудно читаемый main.tpl, а что уже говорить о 100 категориях например?
    В данном варианте достаточно сделать файл шаблона с правильным именем и он всегда "подхватится" в нужном месте...
     
    noxxxxx нравится это.
  5. viktor6

    viktor6 Постоялец

    Регистр.:
    16 дек 2008
    Сообщения:
    139
    Симпатии:
    6
    извините может не в тему но допустим есть шаблон donate.tpl как сделать чтобы его можно было редактировать из админки там где стандартные шаблоны
     
  6. lift

    lift Читатель

    Заблокирован
    Регистр.:
    1 июл 2007
    Сообщения:
    2.226
    Симпатии:
    1.377
    Никак
    (набиваю 10 символов для отправки сообщения :))
     
  7. ant1-pa

    ant1-pa

    Регистр.:
    3 ноя 2007
    Сообщения:
    448
    Симпатии:
    96

    попробуй по аналогии в коде двига добавить этот шаб
     
  8. annexare

    annexare Писатель

    Регистр.:
    28 окт 2007
    Сообщения:
    4
    Симпатии:
    0
    Не первый год работаю с дле и как мне кажется, лучший вариант решения шаблона для категории, это решение от IgorA100, за что ему и спасибо :ay:
     
  9. boxman

    boxman Постоялец

    Регистр.:
    23 июн 2009
    Сообщения:
    51
    Симпатии:
    12
    Это можно реализовать (я у себя так сделал), но много правок кода. Стучись в личку на добавления в админку одного tpl что-нибудь придумаем.
     
  10. Heidality

    Heidality Создатель

    Регистр.:
    13 авг 2009
    Сообщения:
    16
    Симпатии:
    6
    A нельзя в index.php сделать так?
     
Статус темы:
Закрыта.