Модуль Свой архив для каждой рубрики » Techno-Co — Всё для вебмастера, для создание сайтов с нуля. {title}

Добрый день! Потребовалось на одном сайте реализовать вывод своего архива для каждой рубрики (поделить архив на категории).Архив для рубрик имеет ЧПУ: /news/2014/08/, где news — рубрика

Установка:

1. Скачайте файл catarchives.php, и положите его в папку /engine/modules/
2. Откройте файл engine/engine.php найдите:

// ################ Новости за месяц #################
if ($year != '' and $month != '' and $day == '') {

И замените на:

// ################ Новости за месяц #################
if ($year != '' and $month != '' and $day == '' and !$cat_archives) {

Перед:

// ################ Новости за месяц #################

Добавьте:

$cat_archives = @$db->safesql ( strip_tags ( $_GET['catarchive'] ) );

            if ($year != '' and $month != '' and $day == '' and $cat_archives) {

                if ($cstart) {
                    $cstart = $cstart - 1;
                    $cstart = $cstart * $config['news_number'];
                }
                if (intval($month) < 1 OR intval($month) > 12) {
                    header("HTTP/1.0 301 Moved Permanently");
                    header("Location: ".str_replace("index.php","",$_SERVER['PHP_SELF'])."{$year}/01/");
                    die("Redirect");
                }

                $url_page = $config['http_home_url'] . $cat_info[$category_id]['alt_name'] . "/" . $year . "/" . $month;
                $user_query = "catarchive=true&category=" . $category_id . "year=" . $year . "&month=" . $month;

                $where_category = "category regexp '[[::]]' AND";

                $sql_select = "SELECT p.id, p.autor, p.date, p.short_story, CHAR_LENGTH(p.full_story) as full_story, p.xfields, p.title, p.category, p.alt_name, p.comm_num, p.allow_comm, p.fixed, p.tags, e.news_read, e.allow_rate, e.rating, e.vote_num, e.votes, e.view_edit, e.editdate, e.editor, e.reason FROM " . PREFIX . "_post p LEFT JOIN " . PREFIX . "_post_extras e ON (p.id=e.news_id) WHERE {$where_category} {$stop_list}date >= '{$year}-{$month}-01'AND date < '{$year}-{$month}-01' + INTERVAL 1 MONTH AND approve=1" . $where_date . " ORDER BY " . $news_sort_by . " " . $news_direction_by . " LIMIT " . $cstart . "," . $config['news_number'];
                $sql_count = "SELECT COUNT(*) as count FROM " . PREFIX . "_post where {$where_category} {$stop_list}date >= '{$year}-{$month}-01'AND date < '{$year}-{$month}-01' + INTERVAL 1 MONTH AND approve=1" . $where_date;

            }

3. И последний шаг, если у вас включен ЧПУ, в файле .htaccess после:

RewriteEngine On

Добавить:

RewriteRule ^([^.]+)/([0-9]{4})/([0-9]{2})(/?)+$ index.php?catarchive=true&category=$1&year=$2&month=$3&cstart=1 [L]
RewriteRule ^([^.]+)/([0-9]{4})/([0-9]{2})/page/([0-9]+)(/?)+$ index.php?catarchive=true&category=$1&year=$2&month=$3&cstart=$4 [L]

Использование:

{include file=»engine/modules/catarchives.php»}

будет автоматически выводить архив просматриваемой рубрики

Если необходимо вывести архив определенной рубрики, то необходимо подключить модуль так:

{include file=»engine/modules/catarchives.php?category=ID»}

, где ID — ID необходимой рубрики

Протестировано: на DLE 10.1 — 10.2

Автор: saifym