Представляю Вашему вниманию небольшой хак, который поможет организовать уникальный дизайн каждой новости на главной страницы сайта, без дополнительной нагрузки на сервер!
Установка хака уникального шаблона для каждой новости:
- Открываем engine/modules/show.short.php
- Находим:
if( isset( $view_template ) and $view_template == "rss" ) {
} elseif( $category_id and $cat_info[$category_id]['short_tpl'] != '' ) $tpl->load_template( $cat_info[$category_id]['short_tpl'] . '.tpl' );
else $tpl->load_template( 'shortstory.tpl' );
- Заменяем на:
if( isset( $view_template ) and $view_template == "rss" ) {
} elseif( $category_id and $cat_info[$category_id]['short_tpl'] != '' ) $tpl->load_template( $cat_info[$category_id]['short_tpl'] . '.tpl' );
elseif ( $dle_module == 'main' )
{
$tpl->load_template( 'main_shortstory.tpl' );
$template = explode( '[razdelitel]', $tpl->copy_template );
} else $tpl->load_template( 'shortstory.tpl' );
- Находим:
while ( $row = $db->get_row( $sql_result ) ) {
- Ниже вставляем:
if ( $dle_module == 'main' )
{
if ( in_array( $row['category'], array( '1', '0', '3' ) ) ) $templ = '1';
elseif ( in_array( $row['category'], array( '1', '0', '3' ) ) ) $templ = '2';
else $templ = '0';
if ( isset( $template[$templ] ) ) $tpl->copy_template = $template[$templ];
else $tpl->copy_template = $template[0];
}
- Теперь создаем шаблон main_shortstory.tpl и вставляем несколько шаблонов сразу, разделяя их тегом [razdelitel].
Теперь подробнее! Данный хак загружает ОДИН раз шаблон main_shortstory.tpl и создает из него массив нескольких шаблонов при помощи тега [razdelitel], а при генерации новости мы просто выбираем нужный нам шаблон! Размер массива зависит от количество тегов [razdelitel], если тег вставлен один раз, то создается двух мерный массив, два раза - трех мерный и т.д.
В Данном примере тег будет вставлен 2 раза, соответственно создается трех мерный массив от 0 до 2. Обратите внимание на строчки в коде выделенные зеленым цветом. array( '10', '0', '3' ) (if) 10, 0 и 3 это Ид категорий и если новость относится к этим категориям, то будет загружен шаблон, который находится в массиве с индексом 1 ($templ = '1';) и соответсвенно array( '2', '8', '5' ) (elseif) говорит, что если новость относится к категории 2, 8 или 5 то будет загружен шаблон с индексом в массиве 2 ($templ = '2';). И если новость опубликована в другую категорию (else), то соответственно будет загружаться шаблон с индексом в массиве 0 ($templ = '0';).
Естественно изменяйте под Ваши нужды часть кода выделенные зеленым цветом и добавляйте нужные условия!
Теперь чтобы поняли все до исключения как использовать данный хак приведу пример:
Я хочу чтобы для новостей в категориях 3, 8, 4 загружался синий шаблон, для 2, 5, 12, 6 категорий загружался розовый шаблон, для 14 и 15 категорий загружался оранжевый шаблон, а для всех остальных категорий загружался красный шаблон. (Получится 4 мерный массив с индексами от 0 до 3).
Шаблон main_shortstory.tpl имеет такое содержимое:
---------------------------------------
Код синего шаблона (Индекс в массиве 0)
[razdelitel]
Код красного шаблона (Индекс в массиве 1)
[razdelitel]
Код розового шаблона (Индекс в массиве 2)
[razdelitel]
Код оранжевого шаблона (Индекс в массиве 3)
---------------------------------------
Следовательно я заменяю в коде Выше:
if ( in_array( $row['category'], array( '10', '0', '3' ) ) ) $templ = '1';
elseif ( in_array( $row['category'], array( '2', '8', '5' ) ) ) $templ = '2';
else $templ = '0';
На нужный мне код:
if ( in_array( $row['category'],
array( '3', '8', '4' ) ) ) $templ = '
0';
elseif ( in_array( $row['category'],
array( '2', '5', '12', '6' ) ) ) $templ = '
2';
elseif ( in_array( $row['category'], array( '14', '15' ) ) ) $templ = '3';
else $templ = '1';
Вот и все! У нас получилась радужная, сочная и красивая главная страница! Развивайте, творите, создавайте!