• Автор:

    Flesha
  • Добавлено:

    авг 09, 2014
  • Комментариев:

    1
  • Просмотров:

    1096

Модуль Свой архив для каждой рубрики

Модуль Свой архив для каждой рубрики

Добрый день! Потребовалось на одном сайте реализовать вывод своего архива для каждой рубрики (поделить архив на категории).

Архив для рубрик имеет ЧПУ: /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&amp;category=" . $category_id . "year=" . $year . "&amp;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 необходимой рубрики


Протестировано: на DLE 10.1 - 10.2
Автор: saifym
Демонстрация (зайдите в какую нибудь рубрику, в правой колонке будет архив)

Внимание! У Вас нет прав для просмотра скрытого текста.
Вернуться

Комментарии:


  1. atoxaa → 8 марта 2015 17:18
    как сменить кодировку на win-125
Информация
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.