Sapient Generator - автоматическая генерация сайтов
Добавил filatoff Прочитано: 1811 раз.

Разные шаблоны для кратких новостей в dle

Все, кто имеют свои сайты в сети, рано или поздно сталкиваются с проблемой подгонки каких либо скриптов для эффективного использования и получения нужного результата. Так от большинство моих проектов работают на системе DLE.

И вот недавно на одном из своих проектов потребовалось сделать таким образом, чтобы новости на главной принадлежащие разным категориям имели разные шаблоны. Для этого полез в поиск и пытался найти решения. Сначала перовое, что нашлось это для старых версия движка dle. Примерно версии там до 7.5 учитывались. Для этого код такой был:

    Опубликовано:6-08-2010, 05:31
    Категория: Оптимизация
    Добавить в закладки:

В админке DLE можно задать разные шаблоны для кратких новостей, но действуют они только при просмотре категории.Чтобы они действовали при просмотре всех кратких новостей нужно:
найти в engine/modules/show.short.php

while($row = $db->get_row($sql_result)){


ниже вставить
$bds_tpl = $cat_info[$row['category']]['short_tpl'] ? $cat_info[$row['category']]['short_tpl'] : 'shortstory';
if ($bds_tpl != $bdssh)
{
$tpl->load_template($bds_tpl.'.tpl');
$bdssh = $bds_tpl;
}


Но на новых версиях такое решение не подходит. Поэтому искал решения дальше.
На это нашел такое:

Установка:
Открываем /engine/moodules/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' );

Найдите:
$row['category'] = intval( $row['category'] );

Ниже вставить:
$cat_idd = $row['category'];
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( $cat_idd and $cat_info[$cat_idd]['short_tpl'] != '' ) $tpl->load_template( $cat_info[$cat_idd]['short_tpl'] . '.tpl' );
        else $tpl->load_template( 'shortstory.tpl' );


Но и это еще не все.
У меня например, используются в дизайнах дополнительные поля новостей. И вот при последнем решении такие поля перестают работать.
Для того чтобы дополнительные поля работали, нужно к последнему коду добавить еще две строчки:

if (strpos ($tpl->copy_template, "[xfvalue_") !== false) $xfound = true; else $xfound = false;
if ($xfound) $xfields = xfieldsload();

Добавлено в Оптимизация

Добавление комментария