Индивидуальный main.tpl в DLE

R0
На сайте с 02.11.2011
Offline
20
5636

Хочется сделать для разных категорий сайта индивидуальные шаблоны main.tpl, cейчас я просто использую разные папки с шаблонами, то есть в папке templates находятся папки cat1, cat2, cat3, это не совсем удобно, хочется просто иметь один шаблон например cat1 и чтобы в нём уже были различные файлы main.tpl: main.tpl, cat2_main.tpl, cat3_main.tpl

на просторах интернета нашёл несколько способов реализации и мне нужно знать какой является наиболее оптимальным:

1-й способ

в 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 категории.

2-й способ

немного другой код

в index.php

Вместо:

$tpl->load_template ( 'main.tpl' );

прописать:

$catTemplate = ($do == 'cat') ? $category.'_' : '';

if (file_exists(TEMPLATE_DIR . '/'. $catTemplate.'main.tpl')) {

$tpl->load_template ( $catTemplate.'main.tpl' );

} else {

$tpl->load_template ( 'main.tpl' );

}

оптимизированный код:

$f_ = 'main_' . $category . '.tpl';

$catTemplate = ($do == 'cat')&(file_exists(TEMPLATE_DIR . '/'. $f_)) ? $f_ : 'main.tpl';

$tpl->load_template ( $catTemplate );

и для каждой категори файл шаблона должен быть вида cat_main.tpl, где cat - url категории

3-й способ:

Создаем копию main.tpl с именем main_main.tpl.

В main.tpl вставляем:

[not-category=6,7,8,9,10]{include file="main_main.tpl"}[/not-category]

[category=6]{include file="main_6.tpl"}[/category]

[category=7]{include file="main_7.tpl"}[/category]

[category=8]{include file="main_8.tpl"}[/category]

[category=9]{include file="main_9.tpl"}[/category]

[category=10]{include file="main_10.tpl"}[/category]

4-й способ:

Оставить всё как есть, то есть для каждой категории свой отдельный шаблон

Интересует какой из способов более правильный, более быстрый, менее всего грузит базу данных

Vasilenko
На сайте с 01.10.2006
Offline
97
#1

Для категории можно задавать шаблон в самой категории (.ru/admin.php?mod=categories&action=edit)

Там в самом низу можно задавать нужный шаблон.

Лично я поступаю таким образом + 3 способ.

Для примера смотрите главную страницу http://w9y.ru/

А теперь посмотрите категорию wordpress темы http://w9y.ru/wordpress/templ/

Мой блог (http://vasilenko.info/)
WebAlt
На сайте с 02.12.2007
Offline
265
#2

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий