Block.Pro.2.5

29.03
334
33 903
Block.Pro.2.5


Block.Pro.2 - Расширенный вывод блоков с новостями для DLE

Модуль для удобного и гибкого вывода новостей на любой странице DLE-сайта

Версия DLE: 9.5 (на других не проверялся, но работать должен)

Версия модуля: 2.5

Дата релиза: 29.03.2012

Автор: ПафНутиЙ

Контакты: http://pafnuty.name, Google+ или email

Модуль распространяется бесплатно для частного и коммерческого использования

При публикации модуля не забывайте оставлять ссылку на первоисточник, уважайте чужой труд.

Основные возможности модуля

  • Вывод популярных (топ по комментариям, рейтингу, просмотрам или как стандартный топ в dle), похожих, случайных (с возможностью отключения кеширования блока) или последних новостей.
  • Подключение модуля одной строкой непосредственно любой в шаблон (через include).
  • Простая и очень гибкая настройка вывода каждого блока.
  • Кеширование каждого блока (обновление кеша при добавлении новости или комментария на сайт) с возможностью отключения кеша для каждого блока.
  • Настройка категорий для вывода новостей (вывод только из определённых категорий, игнорирование определённых категорий, вывод или ингорирование новостей из просматриваемой категории)
  • Вывод уменьшенной копии картинки (в т.ч. и вместе с оригинальной картинкой) из короткой новости или дополнительного поля (картинки берутся только из папки uploads текущего сайта).
  • Автоматическое создание папки для уменьшенных копий изображений и выставление нужных прав.
  • Обрезка заголовка новости до заданного количества символов.
  • Обрезка текста новости (до заданного количества символов или до конца слова).
  • Ввод иконок категории.
  • Можно задать временной интервал для отбора новостей (по умолчанию 30дней).
  • Можно задать каждому блоку свой шаблон, свою картинку-заглушку.
  • Поддержка всех тегов, используемых в шаблонах кратких новостей.
  • Поддержка фильтра (перекрестные ссылки) по допполям, реализованного в DLE9.5
  • Можно указать с какой по счету новости начать вывод (например с 4й по 15ю).
  • Возможность быстрого редактирования новостей прямо из блока, аналогично стандартному функционалу

Установка модуля

  1. Скопировать файл block.pro.2.php в папку engine/modules/
  2. Скопировать содержимое папки THEME в папку с текущим шаблоном сайта
  3. В нужном месте прописать строку подключения модуля с обязательными параметрами:
    {include file="engine/modules/block.pro.2.php?&block_id=BLOCK&template=blockpro"}
    Где: BLOCK - Уникальный идентификатор блока blockpro - имя шаблона, используемого для вывода
  4. Настроить дополнительные параметры строки подключения и шаблон

Для вывода похожих новостей

  1. Отключить стандартный вывод похожих новостей в админке (Настройка системы » Оптимизация запросов к базе данных » Отображение похожих новостей » "нет")
  2. Открыть файл engine/modules/show.full.php перед
    if( $config['related_news']
    вставить
    /*Block.Pro - relatednews*/
    $block_id = 'related_'.$row['id']; //Не трогать!
    $relatedpro = "1"; //Не трогать!
    $template="relatednews"; // Имя шаблона (можно менять)
    include_once ENGINE_DIR . '/modules/block.pro.2.php';		
    /*Block.Pro - relatednews*/
  3. Настроить дополнительные переменные подключения модуля (Переменные приведены в таблице ниже. При вставке необходимо заменять символ & на $) и шаблон
  4. В ШАБЛОНЕ ПОЛНОЙ НОВОСТИ НИЧЕГО ДОПОЛНИТЕЛЬНО ПРОПИСЫВАТЬ НЕ НУЖНО! модуль выводится через стандартный тег похожих новостей.

Переменные строки подключения

Все переменные указываются непосредственно в строке подключения модуля.

В таблице дано описание возможных для использования переменных

Наименование переменной Значение по умолчанию Описание Примечание
&block_id   Обязательная переменная. Уникальный идентификатор блока любое, уникальное для каждого блока значение
&template   Обязательная переменная. Имя шаблона для вывода блока указывается только имя, без расширения .tpl
&day 30 Количество дней, за которое осуществляется отбор новостей. Если указать ноль (0) - будут браться новости за всё время. Переменная автоматически принимает нулевое значение, если в строке подключения определена переменная &last, &relatedpro или &rndom
&show_cat   Категория/категории для отбора новостей.

Категории указываются через запятую.

Если указать &show_cat=this - новости будут браться только из просматриваемой категории.

&ignore_cat   Модификатор переменной &show_cat. превращает указанные в &show_cat категории в игнорируемые. Для активации модификатора достаточно его определить (например &ignore_cat=y)
&start_from 0 Начало диапазона отбора новостей.  
&news_num 10 Количество новостей в блоке  
&img_xfield   Имя дополнительного поля для получения уменьшенного изображения.

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

Одновременный вывод картинки из краткого содержимого и допполя невозможен.

В допполе должна лежать прямая ссылка на изображение.

&img_size 60x60 Размер уменьшенной копии изображения. (Ширина X Высота) Допустимо указывать одну цифру (например 100). тогда изображение будет уменьшено по большей стороне. при указании нуля (&img_size=0) изображение обрезаться не будет.
&noimage noimage.png Имя и расширение для картинки-заглушки, в случаи отсутствия изображения в новости. Картинка-заглушка должна располагаться в папке images текущего шаблона сайта.
&nocache   Модификатор, отключающий использование кеша для блока. Для активации модификатора достаточно его определить (например &nocache=y)

 

&random

&last

&top_comm

&top_rating

&top_views

 

Варианты сортировки новостей.

Случайным образом

По дате добавления

Самые комментируемые

Самые рейтинговые

Самые часто просматриваемые

По умолчанию выводятся топ-новости (по аналогии со стандартным топом DLE)

Недопустимо использование нескольких вариантов сортировки одновременно.

&wordcut   Модификатор, отключающий обрезку текста новости до конца слова и включающий обрезку до заданного количества символов. Для активации модификатора достаточно его определить (например &wordcut=y)
$relatedpro   Модификатор активирует механизм отображения похожих новостей. Указывается только при подключении модуля в файле show.full.php для вывода похожих новостей. Для активации модификатора достаточно его определить (например $relatedpro=y;)


Теги шаблона

В таблице приведены возможные для использования в шаблоне теги и их описание.

Обозначение тега шаблона Описание Примечание
{link-category} Ссылка/ссылки на категории  
{category} Наименование категории  
{category-icon} Иконка/иконки категорий При отсутствии иконки берётся картинка {THEME}/images/no_icon.gif
[xfvalue_name] Значение дополнительного поля "name", где "name" название дополнительного поля  
[xfgiven_name] [xfvalue_name] [/xfgiven_name] Выводится дополнительное поле "name", если поле не пустое, если поле не имеет значения, то текст просто вырезается  
[xfnotgiven_name] текст [/xfnotgiven_name] Выводят текст указанный в тегах, если дополнительное поле не было задано при публикации новости, где "name" это имя дополнительного поля  
{image-X} Выводит URL уменьшенной картинки находящейся в краткой новости, где Х это номер картинки в новости, например {image-1} выведет URL первой картинки в краткой новости  
{image_original} Выводит URL оригинальной картинки, указанной в {image-X}  
[image_original] текст [/image_original] Выводят текст указанный в тегах, если есть {image_original}  
[not_image_original] текст [/not_image_original] Выводят текст указанный в тегах, если нет {image_original}  
{rating} Выводит рейтинг  
{vote-num} Выводит количество проголосовавших  
[profile] текст [/profile] Выводят прямую ссылку на профиль автора публикации, без использования всплывающего окна минипрофиля.  
{login} Выводит логин пользователя добавившего новость в виде обычной текстовой информации без ссылок на профиль и карточку пользователя.  
{author} Ссылка на автора новости  
{date} Дата новости в формате, установленном в настройках движка  
{date=X} Дата новости в пользовательском формате  
Block.Pro.2.5 Заголовок новости  
{title limit="X"} Заголовок новости, обрезанный до X символов.  
{text} Текст новости (аналог {short-story})  
{text limit="X"} Текст новости, обрезанный до указанного X количества символов, при этом обрезание текста происходит до последнего логического слова, а не обрывает текст на середине слова.  
{full-link} URL полной новости  
{comments-num} Количество комментариев к новости  
{views} Количество просмотров новости  
[edit] текст [/edit] Ссылка на редактирование новости  



Техническая поддержка модуля осуществляется только по указанным контактным данным

Но это не означает, что техподдержка будет оказана :)

P.S. Пример использования модуля вы можете лицезреть на этом сайте, прямо чуть ниже ссылки на скачивание выводятся похожие новости.

ВНИМАНИЕ!

Все обсуждения модуля теперь только в этой теме или на сайте blockpro.ru

Похожие материалы

Комментарии

pavel587
pavel587 29 марта 2012 19:23
А есть какие-нибуть существенные изменения по сравнению с версией 2.4?
ПафНутиЙ
ПафНутиЙ 29 марта 2012 19:59
Changelog написан в файле модуля.
Но на всякий случай добавил и в публикацию, под спойлер.
AndreY_ZO_o
AndreY_ZO_o 30 марта 2012 17:28
Всё-таки не зря заглянул на блог tongue

"Техническая поддержка модуля осуществляется только по указанным контактным данным
Но это не означает, что техподдержка будет оказана :)" lol
pavel587
pavel587 30 марта 2012 19:24
Да, в версии 2.5 произошли очень серьезные изменения, как раз те, которых не хватало, спасибо!!!
kabmir
kabmir 1 апреля 2012 16:47
Совершенно не ясно, как выводить похожие новости, следуя инструкции - выводятся только просто новости, но не похожие.
P.Chebotarev
P.Chebotarev 1 апреля 2012 17:40
Тезка, привет!
Такой вопрос (задам здесь, может быть этот же вопрос и ответ будет интересен и другим): Скажи, пожалуйста, если установлен вывод из той категории, в которй находится пользователь, то в случае, если пользователь будет находиться в определенной категории, то естественно будет вывод из этой же категории, ну а если пользователь будет находиться, скажем, на главной или на любой другой странице, например стороннего модуля, то будет вывод автоматически общего рейтинга. Верно?
И еще такой вопрос: допустим установлен вывод пяти новостей по комментариям. А в данной категории лишь две новости, где есть комментарии. И тем не менее выводится пять новостей, где первые с комментариями, остальные без иных. Каким образом выводятся остальные, у которых отсутствуют комменты, по какому алгоритму?
P.S. Посмотри, как получилось у меня)) Вывел в левой колонке во вкладках по рейтингу/комментариям/просмотрам.

Спасибо за ответы! Удачи! smile
P.Chebotarev
P.Chebotarev 1 апреля 2012 18:50
Тезка, прошу прощения, вот получается еще такая ситуация.

Категория 1 - нет новостей
- Подкатегория 1 - есть новости
- Подкатегория 2 - есть новости
- Подкатегория 3 - есть новости

В подкатегориях естественно есть вывод новостей из подкатегорий, т.е. в какой подкатегории находишься, с той подкатегории и выводятся новости.
А когда пользователь находится в Категории, то модуль ругается, что нет новостей.
Как сделать, чтобы в Категории выводились новости из всех Подкатегорий данной Категории?

Ну я наспамил)) прошу меня простить)
ПафНутиЙ
ПафНутиЙ 1 апреля 2012 22:37
Цитата: kabmir
Совершенно не ясно, как выводить похожие новости, следуя инструкции - выводятся только просто новости, но не похожие.

А собственно как вы отличаете похожие от простых?
Цитата: P.Chebotarev
ну а если пользователь будет находиться, скажем, на главной или на любой другой странице, например стороннего модуля, то будет вывод автоматически общего рейтинга. Верно?
Нет, будет ошибка. В модуле очень слабая защита от всяких нестандартных случаев (в т.ч. кривых рук). Сделано это в основном из лени, но и предполагается, что главная и внутренние страницы - разные вещи и контент на них выводится разный.

Цитата: P.Chebotarev
Каким образом выводятся остальные, у которых отсутствуют комменты, по какому алгоритму?
Новости выводятся по количеству комментариев - для php ноль - тоже некое количество)

Цитата: P.Chebotarev
Как сделать, чтобы в Категории выводились новости из всех Подкатегорий данной Категории?
Простой вариант - использовать теги category и not-category, средствами только модуля этого не сделать.
P.Chebotarev
P.Chebotarev 1 апреля 2012 23:01
Цитата: ПафНутиЙ
Цитата: P.Chebotarevну а если пользователь будет находиться, скажем, на главной или на любой другой странице, например стороннего модуля, то будет вывод автоматически общего рейтинга. Верно? Нет, будет ошибка. В модуле очень слабая защита от всяких нестандартных случаев (в т.ч. кривых рук). Сделано это в основном из лени, но и предполагается, что главная и внутренние страницы - разные вещи и контент на них выводится разный.

Так в том то и дело, тезка, что так и получается, и никакой ошибки нет, вот сам посмотри у меня на сайте, и на главной, и страницах сторонних модулей))
Цитата: ПафНутиЙ
Простой вариант - использовать теги category и not-category, средствами только модуля этого не сделать.

Все ясно, значит будем выполнять таким способом)
Спасибо!
ПафНутиЙ
ПафНутиЙ 1 апреля 2012 23:11
А, ну да. Модулю параметр не передаётся же, вот он и отбирает новости по дефолтным настройкам.
Softg
Softg 2 апреля 2012 00:08
А можно ли как-то запретить вывод модуля в определенном шаблоне в стандарте дле для для этого необходимо использовать aviable="шаблон", а в этом модуле, как это организовать?
ПафНутиЙ
ПафНутиЙ 2 апреля 2012 00:33
Можно, заключайте строку вызова модуля в любой из тегов, определённых документацией DLE
Softg
Softg 2 апреля 2012 11:04
Все отлично, спасибо!
ПафНутиЙ
ПафНутиЙ 2 апреля 2012 14:22
Цитата: borulin
ПафНутиЙ,вот так у меня./*Block.Pro - relatednews*/$block_id = 'related_'.$row['id']; //Не трогать!$relatedpro = "1"; //Не трогать!$template="relatednews"; // Имя шаблона (можно менять)include_once ENGINE_DIR . '/modules/block.pro.2.php'; /*Block.Pro - relatednews*/{include file="engine/modules/block.pro.2.php?&block_id=TechnoTec&template=blockpro"}


Похожие новости выводятся тегом, выводящим похожие новости. В инструкции к похожим новостям нет строки подключения.
kabmir
kabmir 2 апреля 2012 14:29
Не ясен ваш ответ.
Так как же нужно выводить похожие новости?
ПафНутиЙ
ПафНутиЙ 2 апреля 2012 14:42
{relatednews}
вот так. Это и есть тег, выводящий в DLE похожие новости.
kabmir
kabmir 2 апреля 2012 14:46
И ваш модуль так же выводит?
ПафНутиЙ
ПафНутиЙ 2 апреля 2012 15:36
А что в этом странного?
Отключаем стандартный вывод, переназначаем модулем тег relatednews и без особых усилий получаем кастомный вывод похожих новостей. А так, если включить логику и помотреть на код подключения модуля в show.full.php - можно невооруженным взглядом найти все переменные, указываемые в строке подключения модуля при обычном выводе. А ещё полезно и безопасно пытаться вникать в код, указываемый в инструкциях для установки всяких модификаций ибо очень легко там может содержаться какая нибудь гадость, открывающая дыру в сайте.
kabmir
kabmir 2 апреля 2012 15:39
Напишите пожалуйста сюда конкретно строку вызова похожих новостей.
borulin
borulin 2 апреля 2012 15:47
ПафНутиЙ, Напишите пожалуйста строку вызова похожих новостей.
Уже который день бьюсь с этим модулем - просто закалебало!!!
kabmir
kabmir 2 апреля 2012 15:48
borulin,
это верно - похожие упорно не выводятся, и в инструкции по этому поводу мутно написано!
ПафНутиЙ
ПафНутиЙ 2 апреля 2012 15:57
kabmir,
borulin,
В инструкции написано что чтото требуется прописывать в шаблоне полной новости?
В документации к DLE написано чёрным по белому КАК в шаблоне выводятся похожие новости.
ТОЧНО ТАК ЖЕ выводятся похожие новости модулем. Модуль просто подменяет собой стандартный функионал DLE.
Вы вообще чтоли думать не хотите??? Ставите на свой сайт сами не понимаете что и как? как так можно вообще? или мне инструкции как для даунов писать, или может большими красными буквами выделять: не делайте того, чего нет в ниструкции, в ниструкции НЕТ ни единого слова о том что надо писать строку подключения для вывода похожих новостей!
borulin
borulin 2 апреля 2012 15:57
kabmir, если у Вас DLE 9.2? то поставте модуль Advanced-Related,(отлично работает)
borulin
borulin 2 апреля 2012 16:04
Спасибо за всё!!!
Для меня, как новичка - это слишком сложно.
borulin
borulin 2 апреля 2012 16:45
После 3-х дней мучений, наконец то сделал!!!Ура!!!
Счас напишу подробно -для таких чайников как я.
borulin
borulin 2 апреля 2012 17:05
$template="relatednews"; // Имя шаблона (можно менять) заменить на $template="blockpro"; // Имя шаблона (можно менять)
В ваше шаблоне в fullstory.tpl ничего не менять
P.Chebotarev
P.Chebotarev 2 апреля 2012 17:35
Цитата: ПафНутиЙ
ТОЧНО ТАК ЖЕ выводятся похожие новости модулем. Модуль просто подменяет собой стандартный функионал DLE.Вы вообще чтоли думать не хотите??? Ставите на свой сайт сами не понимаете что и как? как так можно вообще? или мне инструкции как для даунов писать, или может большими красными буквами выделять: не делайте того, чего нет в ниструкции, в ниструкции НЕТ ни единого слова о том что надо писать строку подключения для вывода похожих новостей!

И как, тезка, у тебя терпения хватает на все это?)) А знаешь, я вот заметил, чем все проще и доступнее, тем всегда сложнее, потому как действительно народ в последнее время думать совсем не хочет. А ты в следующий раз инструкцию по установке составляй иероглифами, а кто знает, глядишь да всем все сразу станет доступно и понятно))
borulin
borulin 2 апреля 2012 19:30
Почему сразу не прописать
$template="blockpro"; вместо
$template="relatednews";
чтоб народ не мучался, а просто сказал Вам спасибо!!!
Ведь без этого Похожие публикации: работать не будут!!!
Я всёровно не понимаю Ваш подход - к вылаживанию материала.
ПафНутиЙ
ПафНутиЙ 2 апреля 2012 20:09
Ну там же русским языком написано: настроить шаблон. Или я и шаблон должен за вас настраивать?
Для любого, уважающего свой сайт, админа - поправить шаблон под свой дизайн - дело принципа, отсюда сделать универсальное решение невозможно.
Подозреваю, что если бы я в шаблоне прописал бы все, возможные к использованию, переменные и теги, Вы бы начали выражать недовольство тем, что а "что-это у меня допполя не работают?" или "почему епта гости не видят картинки, что за говномодуль?".
Ещё раз повторюсь, как говорил ещё в первых версиях:
"Модуль не для криворуких админов, не желающих и не могущих его настроить под себя, готовых решений бесплатно я не делал, не делаю и делать не буду". Хоть эта категория людей и встречается редко, проблем они своей невнимательностью и зачастую тугоумием в плане правильного прочтения (а скорее всего нежеланием читать "многабукафф") документации доставляют больше, чем люди просящие добавить тот или иной функционал, который я, в силу недостаточного знания php (и в отличии от других, не скрываю этого), не в силах самостоятельно добавить без дополнительного изучения документации по движку и php+mysql. И тем не менее функционал модуля постоянно пополнялся.
Так что не нужно говорить, что вы мучаетесь и валить вину на меня.
Включайте голову, в голове включайте логику, рассуждайте почему так получается, где ошибка с Вашей стороны, а вот потом уже пишите подробно разработчику что сделано и какие конкретно ошибки возникают или в чём конкретно проявляется неработоспособность модуля.
А спасибо мне особо и не надо, я делал модуль для себя и для саморазвития, чем и всем остальным советую заняться на досуге.
P.S. Не считайте это оскорблением, тем более в свой адрес я не имею ввиду кого то конкретно.
borulin
borulin 2 апреля 2012 23:38
Пускай будет по вашему.
Спасибо за модуль, всё отлично работает.

Добавить комментарий

Комментировать могут только зарегистрированные пользователи

Информация

Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.