июль 03 2013

Модуль Block.Pro.3

Модуль Block.Pro.3

Модуль Block.Pro.3 предназначен для пользовательского вывода новостей на сайте под управлением CMS DLE и позиционируется как замена или альтернатива custom, related-news и topnews в DLE 9.6-10.0.

Сегодня я хочу подробно рассказать вам о модуле Block.Pro.3 и показать немного примеров реализации задуманного функционала.

Для чего нужен модуль
Если кратко – модуль предназначен для пользовательского вывода новостей на сайте под управлением CMS DLE.

Модуль может выводить:
  • стандартный топ новостей (алгоритм такой же как в DLE);
  • топ по комментариям;
  • топ по просмотрам;
  • топ по рейтингу;
  • похожие новости (причём не обязательно в полной новости, но об этом ниже);
  • последние новости;
  • новости в алфавитном порядке;
  • новости в случайном порядке.

Основные преимущества модуля
  • Подключение одной строкой в любой шаблон сайта.
  • Полноценный вывод дополнительных полей.
  • Полноценный вывод похожих новостей без правок движка.
  • Гибкое кеширование каждого блока.
  • Работа с картинками.
  • Фильтры.

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

Работа с картинками
Одно из основных преимуществ Block.Pro.3 – гибкая работа с картинками. У модуля собственный php-класс для работы с изображениями, благодаря которому можно выводить картинки именно так, как это требуется в конкретной ситуации.

Допустим нам нужно вывести картинку, взятую из полной новости, уменьшить её так, чтобы каждая сторона была не более 100px, при этом некоторые картинки у нас лежат на радикале, а для оптимизации изображений качество картинки должно быть 75. Спустя минуту работы с генератором мы имеем вот такую строку подключения:
http://blockpro.ru/generator/#image=full_story&remoteImages=y&grabRemote=y&imgSize=100&imgQuality=75

Разберём её подробнее:
image=full_story – берём картинку из полной новости.
remoteImages=y – разрешаем показывать сторонние картинки (в нашем случаи это радикал)
grabRemote=y – разрешаем тянуть сторонние картинки к себе на сайт
imgSize=100 – устанавливаем размер создаваемой миниатюры
imgQuality=75 – устанавливаем требуемое качество изображений

Опытные пользователи заметят, что не хватает параметра, отвечающего за метод ресайза изображений, которых в модуле аж пять штук – авто (вписывание в рамки), уменьшение по ширине, уменьшение по высоте, точный размер и crop (уменьшение до заданных размеров с обрезкой лишнего). Он не указан, т.к. вписывание в рамки – это значение по умолчанию.

Теперь достаточно прописать в шаблоне модуля тег
{image}
– для вывода уменьшенной копии, и
{full-image}
– для вывода оригинала.

Все уменьшенные картинки будут загружены в созданную папку uploads/blockpro/100/{год и месяц новости}/ при первом вызове модуля, и после этого будут браться уже готовые картинки из нужных папок. Создание подобной иерархии папок даёт возможность удалять только те картинки, которые не нужны в данный момент, к примеру вы меняете размер изображений в блоке со 100 на 150 и удаляете всю папку uploads/blockpro/100. К тому же при очень большом количестве картинок сервер не будет тупить, как если бы картинки лежали в одной папке. В случае, если вдруг в полной новости не окажется картинки – будет подставлена заглушка, которую так же можно легко настроить. Достаточно прописать переменные:

noimage=small.jpg – для маленькой заглушки (вместо уменьшенной копии изображения)
noimageFull=big.png – для большой заглушки (вместо оригинальной картинки)

При этом указанные изображения должны лежать в папке /blockpro/ текущего шаблона сайта.

А вот такая строка:
{include file="engine/modules/blockpro/block.pro.3.php?ℑ=image&remoteImages=y&showSmall=y"}

Будет выводить картинки из дополнительного поля с именем image при этом будут выводиться уменьшенные копии, а так же будут показываться картинки со сторонних сайтов.

Похожие новости

Возможность вывода похожих новостей в любом месте сайта – не менее значимая возможность модуля. Приведу простой пример того, как можно заменить вывод стандартных похожих новостей. Простая строка подключения, расположенная в fullstory.tpl:
{include file="engine/modules/blockpro/block.pro.3.php?&template=blockpro/relates8&cacheLive=7200&limit=8&sort=none&titleLimit=30&textLimit=150&related=this"}

Выведет нам блок с 8-ю новостями, похожими на просматриваемую в данный момент, блок будет обновляться не чаще чем раз в пять дней, для вывода будет использован шаблон {ТЕКУЩИЙ_ШАБЛОН}/blockpro/related8.tpl (его конечно же необходимо предварительно создать). sort=none - обязательная переменная для того, что бы полностью повторить функционал стандартных похожих новостей. А вот самое интересное начинается в шаблоне:
<div class="related-item">
    <a href="{full-link}" title="{full-title}" >Модуль Block.Pro.3 [comments]({comments-num})[/comments]</a>
    {category-icon} <span>{date="d.m.Y"}</span> | <span>{short-story}</span>
</div>
Помимо заголовка и текста новости, обрезанных до заданного количества символов (до логического завершения слова) в похожих новостях будет выведено количество комментариев, иконка, или иконки категорий и дата новости, стандартные похожие новости этого пока не умеют. И всё это без каких либо правок движка.

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

Первая строка подключения выведет три основных новости:
{include file="engine/modules/blockpro/block.pro.3.php?&template=advanced&limit=3&sort=date"}

А в шаблоне {ТЕКУЩИЙ_ШАБЛОН}/advanced.tpl прописываем ещё одну строку подключения:
{include file="engine/modules/blockpro/block.pro.3.php?&template=blockpro/relatedmain&cacheLive=7200&limit=3&sort=none &related={news-id}"}

Таким образом переменная: related={news-id} будет принимать значение id новости, а уже по этому id ищутся похожие новости и выводятся отдельным шаблоном {ТЕКУЩИЙ_ШАБЛОН}/blockpro/relatedmain.tpl.

Фильтры

Фильтры – основной способ сократить выборку новостей до интересующего диапазона. Block.Pro.3 имеет следующие фильтры:
  • по авторам
  • по категориям
  • по id новостей
  • по дополнительным полям (заполнено/не заполнено)
Все фильтры могут принимать множественные свойства, перечисляемые через запятую. Могут исключать из вывода указанные значения, а так же могут сочетаться исключающие и разрешающие фильтры.

Самый простой пример практического применения фильтров – вывод новостей пользователя при просмотре его профиля. Расположим вот такую строку в файле userinfo.tpl:

{include file="engine/modules/blockpro/block.pro.3.php?&author=this&day=15"}

И выведутся топ 10 новостей за последние 15 дней того пользователя, чей профиль мы в данный момент просматриваем. При этом для каждого просмотренного профиля пользователя будет создан свой кеш-файл, что значительно снижает нагрузку на хостинг, а если указать время жизни кеша – так и вообще сводит её к минимуму.

Рассмотрим пример по сложнее:
Требуется вывести самые просматриваемые новости за прошлую неделю:
{include file="engine/modules/blockpro/block.pro.3.php?cacheLive=10080&day=14&dayCount=7&sort=views&showSmall=y"}
где cacheLive=10080 - время кеширования блока равное одной неделе (60мин*24ч*7д).

Или например:
{include file="engine/modules/blockpro/block.pro.3.php?cacheLive=60&limit=5&catId=14,15&notPostId=1,5&notAuthor=admin,user&sort=random&avatar=y"}
в блоке будут показаны 5 случайных новостей с аватарками авторов, находящихся в категориях 14 и 15, при этом новости авторов admin и user, а так же новости с id 1 и 5 не будут выводиться в блоке. Кеш блока будет обновляться не чаще, чем раз в час.

В заключение
Если вы всё же не можете определиться использовать стандартные средства DLE или модуль, для вас есть специальная таблица сравнения функционала custom и Block.Pro.3.
В статье рассмотрены далеко не все возможности модуля, а лишь те, что явно выделяют модуль среди других подобных и отличают его от custom, topnews и related-news. Наиболее полная документация по Block.Pro.3 и удобный генератор строк подключения представлена на официальном сайте модуля.

Скачать актуальную версию модуля можно только с GitHub, никакие другие источники не являются официальными и не гарантируют вам наличие актуальной версии модуля.

Комментарии

TCSE

TCSE

3 июля 2013 19:32 Клиенты
1
Паша молодец! Полезный модуль и главное не требующий правок исходных файлов движка.
Dlepro

Dlepro

3 июля 2013 20:07 Посетители
3
Полезный модуль! Павел не упомянул, что он в кодировке UTF, для работы с win-1251 конвертируйте файл шаблона и модуля.
ПафНутиЙ

ПафНутиЙ

3 июля 2013 20:17 Посетители
4
TCSE,
Спасибо )

Цитата: Dlepro
Полезный модуль! Павел не упомянул, что он в кодировке UTF, для работы с win-1251 конвертируйте файл шаблона и модуля.

Да, забыл про это, но об этом написано в инструкции по установке: blockpro.ru/documentation/#install Связано это с тем, что на гитхаб нельзя корректно запостить код в 1251, кириллица превращается в крякозябры.
posternakd

posternakd

9 ноября 2013 06:00 Посетители
1
Извините! Но я нифуя не понял как устанавливать
ПафНутиЙ

ПафНутиЙ

21 ноября 2013 19:11 Посетители
7
Цитата: posternakd
Извините! Но я нифуя не понял как устанавливать

Зайдите на сайт и посмотрите инструкцию по установке.
NeEMO

NeEMO

27 октября 2016 15:07 Клиенты
0
Добрый день, модуль может вывести на страницу раздела или категории список ссылок на подразделы? К примеру на разделе Автомобили нужно вывести список на подраздел Киа, Хендай и тп, автоматически

Спасибо!
celsoft

celsoft

27 октября 2016 15:30 Администраторы
0
NeEMO,
Модуль старый от 13 года. Здесь вам вряд ли кто поможет, вам нужно зайти на сайт автора модуля и там обратиться за поддержкой. В эту старую тему вряд-ли кто заглядывает.

Информация

Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.
Календарь
«    Август 2017    »
ПнВтСрЧтПтСбВс
 123456
78910111213
14151617181920
21222324252627
28293031 
Опрос на сайте
Совершаете ли вы покупки в интернет?

Популярные новости
Архив новостей
Август 2017 (3)
Июль 2017 (1)
Июнь 2017 (1)
Апрель 2017 (3)
Март 2017 (2)
Февраль 2017 (1)