» » Большой пост о Block.Pro.3 или как с лёгкостью заменить custom, related-news и topnews в DLE 9.6-10.0 всего одной строкой.

Большой пост о Block.Pro.3 или как с лёгкостью заменить custom, related-news и topnews в DLE 9.6-10.0 всего одной строкой.

3.07
134
40 558
Большой пост о Block.Pro.3 или как с лёгкостью заменить custom, related-news и topnews в DLE 9.6-10.0 всего одной строкой.



Внимание!
Развитие и техподдержка модуля прекращены.
Актуальная версия модуля — BlockPro 4



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

Для чего нужен модуль

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

Основные преимущества модуля

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

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

Работа с картинками

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

Допустим нам нужно вывести картинку, взятую из полной новости, уменьшить её так, чтобы каждая сторона была не более 100px, при этом некоторые картинки у нас лежат на радикале, а для оптимизации изображений качество картинки должно быть 75. Спустя минуту работы с генератором мы имеем вот такую строку подключения:
{include file="engine/modules/blockpro/block.pro.3.php?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=image&remoteImages=y&showSmall=y"}

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

Ну и на последок ещё один пример с картинками:
{include file="engine/modules/blockpro/block.pro.3.php?&cacheLive=1440&limit=5&catId=1,2,3&sort=date&remoteImages=y&grabRemote=y&imgSize=250x150&imgQuality=80&resizeType=crop&titleLimit=50&textLimit=140"}

Пять последних новостей из категорий 1,2,3 с картинкой из краткой новости, уменьшенной по меньшей стороне и обрезанной по большей до размера 250x150px, качества 80% не зависимо от расположения картинки (радикал тоже подтянется на сайт), с обрезанным до 50 символов, заголовком и до 140 символов текстом новости, кеш блока будет обновляться не чаще одного раза в сутки.
При этом в модуле есть защита от кривых рук админа, когда он не склеивает домены с www и без www, картинки всё равно будут отображаться правильно (в предыдущих версиях модуля на одном из сайтов выводились заглушки).

С картинками разобрались, идём дальше…

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

Возможность вывода похожих новостей в любом месте сайта – не менее значимая возможность модуля.
Приведу простой пример того, как можно заменить вывод стандартных похожих новостей.
Простая строка подключения, расположенная в 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 или как с лёгкостью заменить custom, related-news и topnews в DLE 9.6-10.0 всего одной строкой. [comments]({comments-num})[/comments]</a>
    {category-icon} <span>{date="d.m.Y"}</span> | <span>{short-story}</span>
</div>

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

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

Большой пост о Block.Pro.3 или как с лёгкостью заменить custom, related-news и topnews в DLE 9.6-10.0 всего одной строкой.


Первая строка подключения выведет три основных новости:
{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 дней того пользователя, чей профиль мы в данный момент просматриваем. При этом для каждого просмотренного профиля пользователя будет создан свой кеш-файл, что значительно снижает нагрузку на хостинг, а если указать время жизни кеша – так и вообще сводит её к минимуму.

Рассмотрим пример по сложнее.
Допустим нам необходимо дать возможность модератору самостоятельно регулировать вывод конкретных новостей в блок «Выбор редакции» на сайте, при этом ему запрещен доступ к правке шаблона, но имеется доступ к управлению рекламными материалами. Всё очень просто: создадим баннер с произвольным именем, например newsid и в контент баннера напишем: 1-6,8-15,22-30, а в строке подключения пропишем так:
{include file="engine/modules/blockpro/block.pro.3.php?postId={banner_newsid}"}
таким образом в блоке будет выведен топ 10 новостей, имеющих id с 1 по 6, с 8 по 15 и с 22 по 30 включительно. При этом модератор спокойно может управлять содержимым блока.

Ещё один пример
Требуется вывести самые просматриваемые новости за прошлую неделю. Нет проблем!
{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.

Большой пост о Block.Pro.3 или как с лёгкостью заменить custom, related-news и topnews в DLE 9.6-10.0 всего одной строкой.


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

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

Комментарии

ПафНутиЙ
ПафНутиЙ 22 августа 2013 17:15
почитайте документацию.
SagentJ007
SagentJ007 3 сентября 2013 12:19
Добрый день, Павел!
Подскажите пожалуйста, я несколько раз прочитал документацию, но так и не понял...
Я пользуюсь Вашим генератором для создания строки, это строку я должен вставить в main.tpl в месте, где я хочу выводить блок?
Но при этом я должен создать *.tpl в папке с шаблоном?
ПафНутиЙ
ПафНутиЙ 3 сентября 2013 12:47
если вы хотите использовать собственный шаблон для вывода новостей в блоке - да.
По умолчанию же подгружается шаблон
{ВАШ_ШАБЛОН}/blockpro/blockpro.tpl
SagentJ007
SagentJ007 3 сентября 2013 12:58
Спасибо! С этим разобрался :)
Скажите, а есть ли возможность у модуля выводить новости за определенную дату?
Например, 1 блок - за 2.09.2013, второй - за 1.09.2013...
ПафНутиЙ
ПафНутиЙ 3 сентября 2013 19:10
нет, новости за конкретную дату модуль выводить не умеет.
Westus
Westus 19 сентября 2013 13:39
Не могу разобраться. Устанавливаю чистую дле 10, в короткую новость вставляю:
{include file="engine/modules/blockpro/block.pro.3.php?image=full_story&remoteImages=y&grabRemote=y&imgSize=100&imgQuality=75"}

В шаблон блока {image} и {full-image}
В результате отображается всего одна новость из трех и в ней:
/templates/Pisces/blockpro/noimage.png /templates/Pisces/blockpro/noimage-full.png/templates/Pisces/blockpro/noimage.png /templates/Pisces/blockpro/noimage-full.png/templates/Pisces/blockpro/noimage.png /templates/Pisces/blockpro/noimage-full.png/templates/Pisces/blockpro/noimage.png /templates/Pisces/blockpro/noimage-full.png

{image} {full-image}{image} {full-image}{image} {full-image}
ПафНутиЙ
ПафНутиЙ 19 сентября 2013 13:42
Дайте адрес сайта.
Westus
Westus 20 сентября 2013 09:50
ПафНутиЙ, теперь я точно ничего не понял. Вместо {content} теперь используем block.pro и делаем нужное оформление для коротких новостей? Мне нужно просто картинку из короткой новости слева выводить, а текст справа.
ПафНутиЙ
ПафНутиЙ 20 сентября 2013 11:57
Для "просто картинки" советую использовать http://sandev.pro/portfolio/39-miniposter-pro.html
ZeuS
ZeuS 1 октября 2013 11:56
а через данный модуль получится вывести популярное за день и популярное за 7 дней?
ПафНутиЙ
ПафНутиЙ 1 октября 2013 12:19
Да.
День:
{include file="engine/modules/blockpro/block.pro.3.php?day=1"}

7 дней:
{include file="engine/modules/blockpro/block.pro.3.php?day=7"}
ZeuS
ZeuS 1 октября 2013 12:26
спасибо. сейчас попробую
ZeuS
ZeuS 1 октября 2013 12:33
на 9.2 я так понял не пойдет?
ПафНутиЙ
ПафНутиЙ 1 октября 2013 12:53
ZeuS
ZeuS 1 октября 2013 23:45
для данного параметра можно прикрутить количество просмотров за день и за 7 дней?
ПафНутиЙ
ПафНутиЙ 2 октября 2013 01:10
да, можно, все параметры описаны в документации и доступны в генераторе
fortune
fortune 13 октября 2013 14:07
Здравствуйте, Павел! Подскажите как решить проблему! У меня не хочет выводится видео из новости модулем! Все работает, текст вводится, картинки тоже, а видео нет. Что делать? Может как то по-особенному строку подключения прописывать?
ПафНутиЙ
ПафНутиЙ 13 октября 2013 14:23
Если текст обрезается - то из него вырезаются все теги, в т.ч. и видео.
fortune
fortune 13 октября 2013 14:24
обрезку убрал вообще, и короткой новости и титла!
fortune
fortune 13 октября 2013 14:27
спасибо! заработало после добавления &textLimit=0 в строку подключения
tigrzver
tigrzver 26 октября 2013 01:01
Кто нибудь может подсказать как сделать. Надо где переменная теги например пишешь 1 ну или че нибудь другое, и это значение соответствует тому что у нас написано в титле.
ПафНутиЙ
ПафНутиЙ 26 октября 2013 21:37
Ничего не понял.
Colt
Colt 28 ноября 2013 21:25
Павел, спасибо за модуль! Не подскажите, как можно вывести новости по другим значениям? Например, по году выпуска, по режиссёру, по компании. Или может есть другие модули с такой функцией?
ПафНутиЙ
ПафНутиЙ 28 ноября 2013 21:31
Если все перечисленные параметры являются записями в соответсвующих полях БД (не допполя), то добавление сортировки не составит труда.
Если это допполя, то сортировать возможно только по заполненности этих полей.
Colt
Colt 28 ноября 2013 21:51
Паша, это допполя, они заполнены, как отсортировать?
ПафНутиЙ
ПафНутиЙ 28 ноября 2013 22:04
Разве только вот так, сортировать по конкретному значению допполя модуль не умеет.
teleoperator27
teleoperator27 23 января 2014 10:31
Здравствуйте. Попытался сделать, что бы блокпро работал по принципу rss, но выводил только фиксированные новости. Выводить то он выводит, но не получается, что бы ссылка формировалась не на тот сайт, где вывод, а на тот, откуда берется. То есть, у обоих сайтов одна база, только префиксы разные. Ковыряюсь в этой части
/**
		 * @param $post - массив с информацией о статье
		 * @return string URL для категории
		 */
но все равно ссылка формируется неправильно. Не подскажете, как сделать?
teleoperator27
teleoperator27 23 января 2014 10:56
Писал писал, а на отправке коммента повисло все ( Придется снова ) В общем, и так и сяк пытался сделать что то типа rss с помощью blockPro. Поясню: есть два сайта, 1.ru и 2.ru. Оба крутятся на одной базе, только префиксы разные. Ставлю блокпро на 1.ru, что бы он выводил зафиксированые новости с сайта 2.ru. Выводить то он выводжит, но никак не могу сформировать правильно ссылку, что бы при клике на {full-link} открывалась статья на сайте-доноре, то есть, кликаешь на заголовок на сайте 1, а полная новость открывается на сайте 2. Сейчас же ссылка берется из конфига 1. Ковырял тут * @param $post - массив с информацией о статье
* @return string URL для категории, но увы, ничего не выходит. Как бы это реализовать? Спасибо за все советы
ПафНутиЙ
ПафНутиЙ 23 января 2014 23:06
Да, с зависаниями при добавлении комментариев я уже и сам устал, но причину не знаю, адо кого-то грамотного найти для отладки.
Проблема ваша в том, что модуль подтягивает конфиг с одного сайта а работает на другом.
Вам нужно модифицировать блокпро таким образом, чтобы он выводил rss на одном сайте, а на другом вы просто поставите информер.
djinn
djinn 27 марта 2014 05:42
Здравствуйте. Первым делом хочу сказать спасибо за очень полезный модуль, который решает многие проблемы с выводом информации на сайте!
С помощью вашего модуля я реализовал вывод иконок новости из доп поля новости, и теперь в списке популярных новостей в сайд баре, видно иконку каждой новости напротив ссылки на новость.
Так же реализовал вывод иконки напротив заголовка h1 в шаблоне модуля catface - catface.tpl таким способом:
{include file="engine/modules/blockpro/block.pro.3.php?template=blockproc&nocache=y&limit=1&catId=this"}

В шаблоне blockproc.tpl прописал только
{category-icon}
, но есть проблема:
У меня на сайте, есть основные категории и подкатегории к каждой основной, иконка выводится только в подкатегориях, потому что в них добавлены новости, а в основной категории нет.
1. Так вот как можно сделать что бы и в основной тоже выводилась иконка категории?
2. И как сделать что бы выводилась иконка категории не зависимо от того есть ли в категории новости или нет?
Спасибо.

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

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

Информация

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