Добрый день! Потребовалось на одном сайте реализовать вывод своего архива для каждой рубрики (поделить архив на категории).
Протестировано: на DLE 10.1 - 10.2
Автор: saifym
Демо версия: http://softformat.net/ (зайдите в какую нибудь рубрику, в правой колонке будет архив)
Архив для рубрик имеет ЧПУ: /news/2014/08/, где news - рубрика
Установка:
1. Скачайте файл catarchives.php, и положите его в папку /engine/modules/
2. Откройте файл engine/engine.php
Найдите:
И замените на:
Перед:
Добавьте:
3. И последний шаг, если у вас включен ЧПУ, в файле .htaccess
После:
Добавить:
Использование
{include file="engine/modules/catarchives.php"} -> будет автоматически выводить архив просматриваемой рубрики
Если необходимо вывести архив определенной рубрики, то необходимо подключить модуль так:
{include file="engine/modules/catarchives.php?category=ID"}, где ID - ID необходимой рубрики
Протестировано: на DLE 10.1 - 10.2
Автор: saifym
Демо версия: http://softformat.net/ (зайдите в какую нибудь рубрику, в правой колонке будет архив)
Архив для рубрик имеет ЧПУ: /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 '[[:<:]](" . $category_id . ")[[:>:]]' 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 необходимой рубрики