Версия: 3.3.5.1

Документация по модулю Block.Pro.3

Новая версия модуля тут!

Общая информация о модуле

Бесплатный модуль Block.Pro.3 предназначен для пользовательского вывода новостей на сайте под управлением CMS DLE.

Благодаря гибкости настроек и уникальным возможностям, модуль может использоваться как аналог {custom}, {topnews} и [related-news] вместе взятых!

Версия DLE: 9.6-10.2 (Поддержка ранних версий пока не планируется.)

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

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

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

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


Особенности Block.Pro.3

  • Вывод популярных (топ по комментариям, рейтингу, просмотрам или как стандартный топ в dle), похожих, случайных (с возможностью отключения кеширования блока) или последних новостей.
  • Подключение одной строкой в любой шаблон сайта.
  • Нет обязательных переменных, достаточно просто подключить модуль
    {include file="engine/modules/blockpro/block.pro.3.php"}
    и выведется топ 10 новостей за всё время.
  • Полноценный вывод дополнительных полей.
  • Полноценный вывод похожих новостей без правок движка. Можно использовать параллельно со стандартным выводом, можно вывести похожие новости даже на странице кратких новостей или профиля пользователя или в любом другом месте. (добавляется +1 запрос на блок при отсутствии кеша)
  • Кеширование каждого блока с возможностью установки времени жизни или отключения кеша для каждого блока.
  • Фильтры новостей

    • По авторам
    • По категориям (3.3.1 можно указывать диапазон ID через тире)
    • По новостям (3.3.1 можно указывать диапазон ID через тире)
    • По дополнительным полям (указанные допполя проверяются на заполненность)
    • По тегам новостей 3.3.5

    Все фильтры могут принимать множественные свойства, перечисляемые через запятую. Могут исключать из вывода указанные значения, а так же могут сочетаться исключающие и разрешающие фильтры. (к примеру фильтрация по авторам с логинами username, username2, но за исключением автора с логином username3)

  • У модуля собственный класс для работы с картинками.
  • Разные методы уменьшения (точный размер, уменьшение по высоте, уменьшение по ширине, "умное" уменьшение, кроп).
  • Уменьшенная копия создаётся из полноразмерной картинки, а не thumb или thumb в зависимости от настроек.
  • Можно задавать качество создаваемой уменьшенной копии картинки, что дополнительно повышает скорость загрузки страницы.
  • Картинку можно брать из допполя, краткой или полной новости. При этом в дополнительном поле кртинка может содержаться в любом виде, а не только в виде прямой ссылки
  • Выводится только первая картинка, если попадается смайлик или спойлер - выводится заглушка.
  • Выводится уменьшенная и оригинальная картинки, если таковых нет - выводится настраиваемая заглушка.
  • Настраиваемая заглушка для отсутствующих иконок (для удобства стилизации картинка имеет class="bp-cat-icon". Загушки настраиваются для уменьшенной и оригинальной картинок)
  • Можно выводить картинки, хранящиеся на сторонних сайтах (radikal и т.п.) при этом они не будут уменьшаться, а выведутся как есть в зависимости от настроек они будут так же уменьшаться или выводиться как есть (рекомендую в этом случаи уменьшать такие картинки средствами CSS).
  • 3.3 Добавлена защита от кривых рук, когда админ не склеивает зеркала и люди ходят на сайт и с www и без www (картинки в этом случаи показывались только на одном из сайтов (т.к. для модуля (как и для самого движка) сайт с www и без www - разные сайты.(см настройки DLE, там можно указать только один домен). Теперь картинки будут показываться всегда.
  • 3.3.3 Вывод аватара автора новости (добавляется +1 запрос на блок при отсутствии кеша)
  • 3.3.3 Вывод новостей за заданный интервал времени (к примеру за прошлую неделю).
  • Вывод всех иконок категорий, к которым принадлежит новость, а не только первой, как в стандарте DLE.
  • Автоматическое создание папок для уменьшенных копий изображений и выставление нужных прав (папки создаются в соответствии с размером уменьшенных картинок, и наименованием месяца и года создания новости), таким образом иерархия папок на сервере становится более понятной и в случаи большого числа изображений не тормозит работу сервера.
  • Обрезка заголовка новости до заданного количества символов.
  • Обрезка текста новости (до заданного количества символов или до конца слова).
  • Все настройки блока вынесены в строку подключения, это уменьшает нагрузку и упрощает настройку.
  • Более детальную информацию по возможностям модуля можно найти в таблице сравнения Block.Pro.3 и {custom}.

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

Внимание!
Все файлы модуля имеют кодировку UTF-8. Если ваш сайт работает в кодировки windows-1251, вам необходимо перекодировать как минимум файлы block.pro.3.php и blockpro.tpl в windows-1251.
  1. Распаковать содержимое папки upload/engine из архива в корень сайта. Имейте ввиду, что необходимо предварительно переименовать папку upload/THEME в соответствии с именем вашего шаблона сайта.
  2. В нужном месте прописать строку подключения модуля:
    {include file="engine/modules/blockpro/block.pro.3.php"}
  3. Настроить дополнительные переменные строки подключения и шаблон. При этом не забывайте про знак вопроса перед первым параметром строки подключения.
  4. Для правильного составления строки подключения пользуйтесь генератором

Таблица сравнения Block.Pro.3 и {custom}

Если вы не можете решить, стоит ли использовать модуль Block.Pro.3 или стандартный тег {custom}, то таблица сравнения функционала поможет определиться с выбором.

Функционал blockpro {custom}
Указание шаблона да да
Отключение кеширования да да
Указание времени жизни кеша блока да нет
Номер новости с которой начнется вывод да да
Cколько новостей будет выведено да да
Сортировка новостей:
по дате да да
по рейтингу да да
по количеству просмотров да да
по количеству комментариев да да
по имени заголовка (по алфавиту) да да
в случайном порядке да да
топ новостей (как в теге {topnews}) да нет
только фиксированные новости да да
только не фиксированные новости да нет
Возможность добавить собственный алгоритм сортировки да нет
Изменение направления сортировки (по убыванию или возрастанию) да нет
Фильтрация:
По имени автора (несколько авторов) да (да) да (нет)
Кроме указанного имени автора (несколько авторов) да (да) нет (нет)
Новости автора при просмотре его профиля да нет
По указанным тегам новости 3.3.5 да нет
Кроме указанных тегов новости 3.3.5 да нет
Новости по просматриваемом тегу (кроме просматриваемого тега) 3.3.5 да нет
По ID новостей (в т.ч. диапазон ID) да (да) да (нет)
Кроме указанных ID новостей (в т.ч. диапазон ID) да (да) нет (нет)
По ID категорий (в т.ч. диапазон ID) да (да) да (да)
Кроме указанных ID категорий (в т.ч. диапазон ID) да (да) нет (нет)
Новости из просматриваемой категории (кроме просматриваемой категории) да (да) нет (нет)
По дополнительным полям (в фильтр попадают только заполненные допполя) да нет
Кроме указанных дополнительных полей (в фильтр попадают только заполненные допполя) да нет
Возможность добавить собственные условия фильтрации да нет
Временной период для отбора новостей да да
Несколько иконок категорий (при мультикатегориях) да нет
Работа с изображениями:
Выбор источника картинки (краткая новость, полная новость, дополнительное поле) да нет
Отображение удалённых изображений да да
Создание уменьшенной копии изображения да нет
Указание качества создаваемой уменьшенной копии изображения да нет
Различные методы уменьшения изображений да нет
Вывод уменьшенной копии и оригинала (в т.ч. настраиваеые заглушки для уменьшенной копии и оригинала) да (да) нет (нет)
Ограничение количества символов в заголовке, кратком и полном содержании (в т.ч. жесткое ограничение по количеству символов) да (да) да (нет)
Показ статистики генерации каждого блока да нет
Вывод похожих новостей в любом месте сайта (в т.ч. не в полной новости) да (да) нет (нет)

Проблемные места

  • Вывод {title limit="XX"} {short-story limit="XX"} {full-story limit="XX"}. На данный момент ограничение количества символов задаётся через строку подключения, и добавлены теги для вывода необрезанного текста.

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

Типичная строка подключения {include file="engine/modules/blockpro/block.pro.3.php"}

Переменные строки подключения указываются в виде кнструкции: &param-value

К примеру такая строка подключения:

{include file="engine/modules/blockpro/block.pro.3.php?&showstat=y&limit=5&sort=random&textLimit=150&imgSize=100x150"}
выведет 5 случайных новостей с картинкой размером 100x150px и покажет статистику времени выполнения блока.

Имя переменной Значение по умолчанию
Пример использования
Описание
template blockpro/blockpro
&template=custom
Имя шаблона блока без расширения (по умолчанию шаблон блокаберётся из папки blockpro текущего шаблона)
prefix news_
&prefix=pref_

Дефолтный префикс кеша, нужен для автоматической чистки кеша при добавлении на сайте комментария или новости.

Автомтически удаляется, если задано время жизни кеша

nocache false
&nocache=y
Отключает кеширование блока
cacheLive false
&cacheLive=15
Задаёт время жизни кеша в минутах
startFrom 0
&startFrom=1
C какой новости начать вывод (ноль - это первая новость, 3 - четвёртая)
limit 10
&limit=2
Количество новостей в блоке
postId  
&postId=1,5,23
&postId=this
&postId=1-10,15-30
ID новостей для вывода в блоке (через запятую). Если указать this - будет выведена просматриваемая новость. Может понадобиться для установки кастомизированных метатегов (актуально для киносайтов). При этом будет создаваться отдельный файл кеша для каждой просмотренной новости.
3.3.1 можно указывать диапазон ID через тире
notPostId  
&notPostId=2,4,6
&notPostId=this
&notPostId=2-6,10-15
ID игнорируемых новостей (через запятую). Если указать this - будет игнорироваться текущая новость, полезно например для вывода топа из текущей категории, но без текущей новости. При этом будет создаваться отдельный файл кеша для каждой просмотренной новости.
3.3.1 можно указывать диапазон ID через тире
author  
&author=admin,bot
&author=this
Логины авторов, для показа их новостей в блоке (через запятую). Если указать this - будут браться новости автора из просматриваемого профиля, при этом будет создаваться отдельный файл кеша для каждой страницы профиля
notAuthor  
&notAuthor=bot
&notAuthor=this
Логины игнорируемых авторов (через запятую). Если указать this - будут игнорироваться новости автора из просматриваемого профиля, при этом будет создаваться отдельный файл кеша для каждой страницы профиля.
tags
3.3.5
 
&tags=новостии,soametag
&tags=this
Теги новостей, для фильтрации по ним (через запятую). Если указать this - будут браться новости в которых присутствует тег, при просмотре страницы конкретного тега, при этом будет создаваться отдельный файл кеша для каждой страницы тега
notTags
3.3.5
 
&notTags=sometag
&notTags=this
Аналогично предыдущему пункту, но новости не будут присутствовать в блоке.
xfilter  
&xfilter=image,text
Имена дополнительных полей для фильтрации по ним новостей (через запятую)
notXfilter  
&notXfilter=image,text
Имена дополнительных полей для игнорирования показа (через запятую)
catId  
&catId=5,6
&catId=this
&catId=2-6,10-15
Категории для показа (через запятую). Если указать this - новости будут браться из просматриваемой категории, при этом будет создаваться отдельный файл кеша для каждой категории.
3.3.1 можно указывать диапазон ID через тире
notCatId  
&notCatId=3,4
&notCatId=this
&notCatId=8-16,25-155
Игнорируемые категории (через запятую). Если указать this - новости будут браться из всех, кроме просматриваемой категории, при этом будет создаваться отдельный файл кеша для каждой категории.
3.3.1 можно указывать диапазон ID через тире
noicon noicon.png
&noicon=myicon.gif
Заглушка для иконок категорий. Указывать необходимо только имя и расширение картинка, предварительно положив картинку в папку /blockpro/ текущего шаблона
day false
&day=14
Временной период для отбора новостей, по умолчанию отсутствует
dayCount
3.3.3
false
&dayCount=7
Временной интервал для отбора новостей, по умолчанию отсутствует.
Примечание: к примеру нужно вывести новости за прошлую неделю. Код: &day=14&dayCount=7 выведет новости за период 14 дней с интервалом в 7 дней, что и есть прошлая неделя. А вот наглядное пояснение
fixed
3.3.4
false
&fixed=y
&fixed=n
Показ только фиксированных новостей &fixed=y или показ только не фиксированных новостей &fixed=n
sort top
&sort=random

Сортировка новостей в блоке, по умолчанию аналогична выводу ТОП-новостей.

Возможные значения:

по умолчанию - стандартный для DLE топ новостей

hit - Эксперименталный топ. Новости отбираются по формуле рейтинг+(комментарии*0.5)+(просмотры*0.1) 3.3.4

date - по дате добавления

comms - по количеству комментариев

rating - по рейтингу

views - по количеству просмотров

title - в алфавитном порядке

random - в случайном порядке

none - без сортировки (можно использовать для вывода похожих новостей идентично стандартному выводу таковых в DLE)

order new
&order=old
Направление сортировки. По умолчанию новые на верху, старые внизу. любое другое значение выведет новости в обратном порядке.
image short_story
&image=xfield

Откуда брать картинку для уменьшеия и вывода в новости. Берётся только первая картинка из новости.

Возможные значения:

short_story - из краткой новости

full_story - из плной новости

xfield - из дополнительного поля, где xfield - имя дополнительного поля

remoteImages false
&remoteImages=y
Включает вывод картинки, если она находится на стороннем ресурсе (уменьшаться она не будет!)
grabRemote
3.3
false
&grabRemote=y
Включает возможность скачивания и уменьшения картинки, если она находится на стороннем ресурсе (работает через cURL). При этом должна быть определена переменная remoteImages. Внимание! включения данной нстройки может серьёзно замедлить отображение страницы при первом обращении к ней.
showSmall
3.3
false
&showSmall=y
Запрещает использовать для ресайза (или показа) оригинальное изображение, если есть его уменьшенная копия. Это требуется, если в новости лежит уменьшенная копия нужного размера (экономит ресурсы сервера).
noimage noimage.png
&noimage=custom.jpg
Картинка-заглушка маленькая. Указывать необходимо только имя и расширение картинка, предварительно положив картинку в папку /blockpro/ текущего шаблона
noimageFull noimage-full.png
&noimageFull=big.png
Картинка-заглушка большая. Указывать необходимо только имя и расширение картинка, предварительно положив картинку в папку /blockpro/ текущего шаблона
imgSize false
&imgSize=150x200
&imgSize=150
Размер уменьшенной копии картинки
imgQuality 80
&imgQuality=60
Качество уменьшенной копии картинки, допустимо использовать диапазон от 0 до 100
resizeType auto
&resizeType=crop

Метод уменьшения копии картинки.

Возможные значения:

exact - уменьшение без сохранения пропорций,

portrait - уменьшение по высоте с сохранением пропорций,

landscape - уменьшение по ширине с сохранением пропорций,

auto - "умное" уменьшение с сохранинием пропорций, при этом размер изображения не выходит за рамки указанной высоты и ширины

crop - кроп (уменьшение по меньшей стороне и обрезка лишнего с краёв большей стороны)

avatar
3.3.3
false
&avatar=y
Разршает вывод аватарки автора новости. Внимание! Включение данной опции прибавит по одному запросу в БД на каждую новость (до кеширования блока).
textLimit false
&textLimit=150
Ограничение количества символов в тексте новости (обрезается и краткая и полная новости). По умолчанию не обзается
titleLimit false
&titleLimit=50
Ограничение количества символов в заголовке. По умолчанию не обзается
wordcut false
&wordcut=y
Жесткое ограничение кол-ва символов, без учета длины слов
showstat false
&showstat=y
Показывать время выполнения блока.

Теги шаблона

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

Название тега Описание
{title} Выводит обрезанный, до заданного количества симолов, заголовок новости.
{full-title} Выводит полный заголовок новости
{image} Выводит URL уменьшенной копии первого изображения из новости или дополнительного поля.
Возможен вывод из краткой новости, полной новости или дополнительного поля, при этом в дополнительном поле должна содержаться прямая ссылка на изображение.
{full-image} Выводит оригинальное первое изображение из новости или дополнительного поля.
{link-category} Отформатированная ссылка на все категории в которой присутствует новость
{category-icon} Выводит все иконки категорий, к которым относится новость.
Для удобства стилизации картинка имеет class="bp-cat-icon"
{category-url} Выводит полный URL на категорию, которой принадлежит данная новость.
{short-story} Краткое содержание новости. Если переменная textLimit равна нулю - новость выведется целиком, без обрезки текста.
{full-story} Полное содержание новости. Если переменная textLimit равна нулю - новость выведется целиком, без обрезки текста.
{news-id} ID новости, с которым она занесена в БД
{login} Логин автора новости (обычный текст)
[profile]текст[/profile] Выводят прямую ссылку на профиль автора публикации, без использования всплывающего окна минипрофиля.
{author} Ссылка-всплывающее окно минипрофиля автора новости.
{views} Количество просмотров новости.
{comments-num} Количество комментариев
[comments]текст[/comments] Выводят текст, если у новости есть комментарии
[not-comments]текст[/not-comments] Выводят текст, если у новости нет комментариев
[allow-comments]текст[/allow-comments] Выводят текст, если комментарии к новости разрешены
[disallow-comments]текст[/disallow-comments] Выводят текст, если комментарии к новости запрещены
{date} Выводит дату в формате, указанном в настройках DLE
{date=D.m.Y} Выводит дату в пользовательском формате
{rating} Выводит рейтинг новости
{vote-num} Выводит количество проголосовавших
[rating]текст[/rating] Выводят текст, если рейтинг новости разрешен
[xfvalue_X] Выводит содержимое дополнительного поля
[xfgiven_X]текст[/xfgiven_X] Выводит текст, если дополнительное поле заполнено
[xfnotgiven_X]текст[/xfnotgiven_X] Выводит текст, если дополнительное поле не заполнено
{tags}
3.3
Выводит теги новости
[tags]текст[/tags]
3.3
Выводит текст если у новости есть теги.
{avatar}
3.3.3
Выводит URL аватара автора новости.

Спасибо:

Александру Фомину за разрешение использовать его наработки.

Sander за поддержку и подсказки по коду.

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