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

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


     05.08.2014    Модули для DLE    4771    5 комментариев

Краткая информация о модуле (хаке)

Автор: saifym
Версия DLE: 10.1 и выше
Цена: Бесплатно
Добрый день! Потребовалось на одном сайте реализовать вывод своего архива для каждой рубрики (поделить архив на категории).

Протестировано: на 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&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 необходимой рубрики

5 комментариев

Mofsy
Эксперт

Mofsy - 9 августа 2014 14:42 -

Спасибо, полезно.

LazyDev
PHP-developer

LazyDev - 11 августа 2014 11:57 -

Я понимаю все, но этого не понимаю. Хак полезен для кого-то но дублировать не понятно зачем, от индекса это скрывать нужно.

Мой блог: LazyDev.pro

Помогаю с решением проблем на платной основе.

dj-avtosh
PHP-developer

dj-avtosh - 11 августа 2014 12:13 -

Ололо, Попов

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

https://elkhan.ru
По заказам пишем сюда: @Rud00y

ЯД: 41001679231462
Заказы в telegram (ремонт модулей, оптимизация нагрузок и т.п.):
В телегу писать сразу задачу и бюджет.

atoxaa
Юзер

atoxaa - 8 марта 2015 17:41 -

как сменить кодировку на win-1251

vadims
Гости

vadims - 8 марта 2015 20:11 -

Устанавливаете Notepad++ и в разделе кодировка выбираете Кирилика > Windows-1251

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