Не нравятся результаты поиска? Попробуйте другой поиск!
DLE FAQ » Все вопросы » Хаки » Шаблон для газеты

Шаблон для газеты


     20.02.2012    Все вопросы » Хаки    5192

вопрос
Требуется сделать двуколоночный шаблон для газеты. В первой колонке выводятся новости из определенной категории, во второй колонке все остальные категории (кроме той новости, что в первой колонке).
Я в первой колонке вывожу новоть через {custom}, а во второй через {content} - но проблема, при нажатии на календарь, новость в первой клонке не сортируется по дате (всегда показывает последнюю новость).
Подскажите как сделать новость из определеной категории, которая бы реагировала на календарь???

Ответил: rashpil


Открыть файл index.php

Найти:

if (strpos ( $tpl->copy_template, "{custom" ) !== false) {
    $tpl->copy_template = preg_replace ( "#\\{custom category=['\"](.+?)['\"] template=['\"](.+?)['\"] aviable=['\"](.+?)['\"] from=['\"](.+?)['\"] limit=['\"](.+?)['\"] cache=['\"](.+?)['\"]\\}#ies", "custom_print('\\1', '\\2', '\\3', '\\4', '\\5', '\\6', '{$dle_module}')", $tpl->copy_template );
}



Заменить на:

if (strpos ( $tpl->copy_template, "{custom" ) !== false) {
    $tpl->copy_template = preg_replace ( "#\\{custom category=['\"](.+?)['\"] day=['\"](.+?)['\"] template=['\"](.+?)['\"] aviable=['\"](.+?)['\"] from=['\"](.+?)['\"] limit=['\"](.+?)['\"] cache=['\"](.+?)['\"]\\}#ies", "custom_print('\\1', '\\2', '\\3', '\\4', '\\5', '\\6', '\\7', '{$dle_module}')", $tpl->copy_template );
}


Открыть файл engine/modules/functions.php

Найти:

function custom_print($custom_category, $custom_template, $aviable, $custom_from, $custom_limit, $custom_cache, $do) {
    global $db, $is_logged, $member_id, $xf_inited, $cat_info, $config, $user_group, $category_id, $_TIME, $lang, $smartphone_detected, $dle_module, $PHP_SELF;
    
    $do = $do ? $do : "main";
    $aviable = explode( '|', $aviable );


Заменить на:

function custom_print($custom_category, $custom_day, $custom_template, $aviable, $custom_from, $custom_limit, $custom_cache, $do) {
    global $db, $day, $month, $year, $is_logged, $member_id, $xf_inited, $cat_info, $config, $user_group, $category_id, $_TIME, $lang, $smartphone_detected, $dle_module, $PHP_SELF;
    
    $do = $do ? $do : "main";
    $aviable = explode( '|', $aviable );
    
    if ($day AND $custom_day == 'yes') {
        $where_day = "date >= '{$year}-{$month}-{$day}' AND date < '{$year}-{$month}-{$day}' + INTERVAL 24 HOUR AND ";
        $custom_cache = "no";
    }


Найти:

        $sql_select = "SELECT id, autor, date, short_story, full_story, xfields, title, category, alt_name, comm_num, allow_comm, allow_rate, fixed, rating, vote_num, news_read, votes, flag, editdate, editor, reason, view_edit, tags FROM " . PREFIX . "_post WHERE " . $stop_list . $where_category . " AND approve" . $where_date . " ORDER BY " . $fixed . $news_sort . " " . $news_msort . " LIMIT " . $custom_from . "," . $custom_limit;


Заменить на:

        $sql_select = "SELECT id, autor, date, short_story, full_story, xfields, title, category, alt_name, comm_num, allow_comm, allow_rate, fixed, rating, vote_num, news_read, votes, flag, editdate, editor, reason, view_edit, tags FROM " . PREFIX . "_post WHERE " . $stop_list . $where_day . $where_category . " AND approve" . $where_date . " ORDER BY " . $fixed . $news_sort . " " . $news_msort . " LIMIT " . $custom_from . "," . $custom_limit;



Тег теперь вместо привычного вида:

{custom category="2,7" template="custom" aviable="global" from="0" limit="10" cache="yes"}


Выглядит так:

{custom category="2,3,4" day="yes" template="shortstory" aviable="global" from="0" limit="3" cache="yes"}


Как видно, добавился параметр day. В блоке, который нужно фильтровать вместе с контентом по дню указывать yes. Так же, этот блок не будет кешироваться на странице с фильтром. На других же страницах кеширование будет опционально (Последний параметр)
Ну, а в блоках которые должны обойтись без этого параметр no.

1 комментарий

rashpil
Эксперт

rashpil - 21 февраля 2012 15:58 -

Похоже востребованный вопрос. Подумаю над кодом на досуге

Чтобы комментировать - войдите или зарегистрируйтесь на сайте

Похожие вопросы

наверх