8Dle
Авторизация

Используем Тег custom для вывода случайных, популярных, последних новостей

Используем Тег {custom} для вывода случайных, популярных, последних новостей

Надоело мне самому искать по всем просторам интернета и заливать, устанавливать и т.д. постоянно каждый модуль. Решил сделать такой модуль, что бы
бесплатно и сразу надежно. Ничего не нашел, долго думал и до меня дошло. Мы все знаем тег {custom}, он работает изначально в dle.

Версия Движка: 8.5 - 9.5
Поддерживают: all * (Opera, Firefox, Chrome и т.д.)

Настройка:
1 шаг
Для нормального вывода, надо открыть файл index.php

Найти в нем код:
if (stripos ( $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=['\"](.+?)['\"] template=['\"](.+?)['\"] aviable=['\"](.+?)['\"] from=['\"](.+?)['\"] limit=['\"](.+?)['\"] order=['\"](.+?)['\"] by=['\"](.+?)['\"] cache=['\"](.+?)['\"]\\}#ies", "custom_print('\\1', '\\2', '\\3', '\\4', '\\5', '\\6', '\\7', '\\8', '{$dle_module}')", $tpl->copy_template );
}


2 шаг
Теперь надо добавить новые теги и описать их функции
Для этого надо нам открыть файл functions.php (его мы можем найти в каталоге /engine/modules/)

Найти в нем код:
function custom_print($custom_category, $custom_template, $aviable, $custom_from, $custom_limit, $custom_cache, $do) {


Заменить на:
function custom_print($custom_category, $custom_template, $aviable, $custom_from, $custom_limit, $custom_order, $custom_by, $custom_cache, $do) {


Найти в нем :
if( $cat_info[$custom_category]['news_sort'] != "" ) $news_sort = $cat_info[$custom_category]['news_sort']; else $news_sort = $config['news_sort'];
if( $cat_info[$custom_category]['news_msort'] != "" ) $news_msort = $cat_info[$custom_category]['news_msort']; else $news_msort = $config['news_msort'];

Заменить на:
if($custom_order != "0")
 $news_sort = $custom_order;
elseif( $cat_info[$custom_category]['news_sort'] != "" )
 $news_sort = $cat_info[$custom_category]['news_sort'];
else 
 $news_sort = $config['news_sort'];

if($custom_by != "0")
 $news_msort = $custom_by;
elseif( $cat_info[$custom_category]['news_msort'] != "" )
 $news_msort = $cat_info[$custom_category]['news_msort'];
else 
 $news_msort = $config['news_msort'];


У нас получается код такого типа (который мы вставляем в main.tpl и там же настраиваем):
{custom category="1" template="custom" aviable="global" from="0" limit="10" order="rating" by="DESC" cache="no"}


Где,
category - это те категории, из которых бы выводились новости. (если более одной категории, то перечисляйте их через запятую category="1,2,3,4,8,20,16" )
template - это тот шаблон, из которой выводится этот блок (например random.tpl)
aviable - раздел в котором будет выводится запрашиваемые новости, может принимать следующие значения:


gobal - во всех разделах
main - на главной странице
date - при просмотре новостей за определенные даты
cat - при просмотре категории
showfull - при просмотре полной новости
search - при просмотре результатов поиска
userinfo - при просмотре профиля
register - при регистрации
stats - при просмотре статистики
pm - при просмотре персональных сообщений
feedback - при просмотре обратной связи
favorites - при просмотре закладок
newposts - при просмотре новых сообщений
addnews - при добавлении новости
lastcomments - при просмотре последних комментариев
static - при просмотре статических страниц
catalog - при просмотре каталога страниц
alltags - при просмотре облака тегов
tags - при просмотре новостей из облака тегов


from - номер новости с которой начнется вывод (например from="5", а если limit="5", то не будет выводиться вообще, а если limit="10", то будет выводиться 5 новостей, причем номер можно поставить любую и там и там)

limit - сколько новостей будет выведено (например limit="5" будет выводиться 5)

cache - принимает значения yes или no - устанавливает кешировать вывод или нет, рекомендуется кешировать для снижения нагрузки. (yes - да, no - нет)

Теперь о order="rating" by="DESC"
order - это поле, которое выдает нам то значение, которое мы указали (написали) в нем.
Перечислю из rating - лучшие новости, RAND() - случайные новости и data - новости добавленные по дате.

Что касается by="DESC"
by - это поле, которое выдает нам то значение, которое мы указали (написали) в нем.
Перечислю ASC – сортирует по возрастанию (1,2,3,4,5), DESC – сортирует по убыванию (5,4,3,2,1)

Жмите на Кнопу ниже, или подписывайтесь!


Читайте также
  1. s0nata
    18 апреля 2012 17:50
    На одном сайте работает, а на другом выдает ошибку:
    MySQL Error!
    ------------------------

    The Error returned was:
    You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'showfull LIMIT 0,10' at line 1

    Error Number:
    1064

    Как исправить?
  2. s0nata
    20 апреля 2012 23:48
    Проблема решена.
  3. foxbob
    9 августа 2012 20:24
    Как проблему решили?
  4. savcorp
    18 августа 2012 22:59
    Работает этот хак и на 9.6, скобочки просто в индекс нужно экранировать, но вот шаблоне статистических страниц не пашет, а это х...
Информация
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.


Dle это движок который изначально проектировался для создания новостных сайтов, но по мере своего развития движка значительно расширил свою функциональность и стал универсальным средством разработки и сопровождения сайтов и блогов различной направленности и тематики. По сравнению с другими бесплатными (и некоторыми платными) CMS системами движок dle обладает довольно обширными возможности.

Авторизация