» » Большой пост о 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
42 550
Большой пост о 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 и удобный генератор строк подключения представлена на официальном сайте модуля.

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

Комментарии

dolmatov
dolmatov 27 марта 2014 19:01
Подскажите, а можно ли выводить например видео ролики youtube, или ifreme ?
Например тегом {video} ? или это сложно реализовать?
ПафНутиЙ
ПафНутиЙ 28 марта 2014 09:39
1. Ну тут только один вариант - добавить иконку с самой категории и выводить иконку категории, а не из допполя.
2. Как вариант - можно написать мини-модуль, выводящий иконку категории (или хак, если не жалко ковырять двиг или не будете обновляться в будущем)
ПафНутиЙ
ПафНутиЙ 28 марта 2014 09:40
нет, не сложно, если ролик находится в тексте новости - можно отключить обрезку текста и ролик выведется.
raen
raen 28 марта 2014 12:38
Здравствуйте! При выводе информации в блоке у меня выводится название, картинка кроп и краткое описание.. Но в кратком описании находится большая картинка и она выводится тоже.. Получается в блоке выводятся 2 картинки, одна малеенькая кроп, за ней идет краткое описание с большой картинкой. Как убрать большую картинку, чтобы она не выводилась?
ПафНутиЙ
ПафНутиЙ 28 марта 2014 12:44
ограничьте кол-во символов в новости.
raen
raen 28 марта 2014 13:08
ПафНутиЙ,
спасибо! Помогло)
Хотел бы еще спросить, есть ли возможность выводить новости в строку?
если добавить атрибут float:left; - ничего не получается, все уезжает. Подскажите пожалуйста..

И еще, можно ли вывести количество загрузок файла?
djinn
djinn 28 марта 2014 13:56
Так я и вывожу иконку из категории а не из доп поля...просто она не выводится там потому что id категории не задействован при добавлении новости...то есть если зайти в категорию, то будет видно все новости из подкатегорий, но они принадлежат подкатегориям а не этой категории, и по этому не хочет иконку категории выводить.. вот я у вас и спрашиваю - как сделать так что бы выводило?
(в подключаемом шаблоне пишу просто - {category-icon})
Из доп поля я вывожу иконку новости... и совсем в другом месте, я писал об этом.
dolmatov
dolmatov 28 марта 2014 19:05
Проблема в том что появляется картинка к видео + описания. Я вот думаю как убрать текст и картинку.

Задумка такая, сделать случайное видео к новости из категории например ID 7
---------------------------
Это увеличит поведенческие факторы.
djinn
djinn 29 марта 2014 10:43
Проблему решил... при помощи css.
ПафНутиЙ
ПафНутиЙ 29 марта 2014 19:44
пропишите:
display: inline-block;
G-3p
G-3p 16 апреля 2014 10:09
Доброе утро)
Модуль имеет возможность перелистывать страницы как {content} и {custom}(10.2)?
ПафНутиЙ
ПафНутиЙ 16 апреля 2014 12:16
нет, в модуле нет постранички.
G-3p
G-3p 16 апреля 2014 14:30
А предвидится в будущем?
Модуль более гибкий чем {content} и хотелось бы им заменить) Если появится ещё и навигация, то цены ему не будет)))
Благодарю за модуль!
ПафНутиЙ
ПафНутиЙ 17 апреля 2014 21:02
Не знаю.
Хочется сделать возможность навигации, но пока не имею возможности.
phoenixaa
phoenixaa 2 июня 2014 13:54
Читал, но не пойму, как сделать. Написано: умеет выводить последние новости... Вопрос: как в блоке типа "похожие новости" для всех страниц вывести 8 последних? Картинка + тайтл в виде ссылки для вставки в мэйн?
Буду благодарен за ответ...
ПафНутиЙ
ПафНутиЙ 3 июня 2014 18:13
В DLE нет разделения на типы блоков.
Если вы выводите похожие новости, как они могут быть последними?
В main вставляется строка подключения модуля, в шаблоне, указанном в строке подключения пропишите необходимые теги, всё выведется.
phoenixaa
phoenixaa 3 июня 2014 20:43
Неправильно выразился. Я хотел сказать, что выглядеть он должен как блок «похожие новости». А в блоке по факту должны быть 8 последних опубликованных новостей… У вас замечательный модуль, но, к сожалению, никак не могу разобраться с его функциональностью… Возможностей много, а использовать для своих целей не всегда получается, хотя вижу, что сделать можно…
указанном в строке подключения пропишите необходимые теги, всё выведется

Это-то я понимаю, вот только сделать не получается, потому и прошу помощи.
Возможно, кроме примеров этой статьи и идущих из нее ссылок есть информация: использовали строку подключения этого модуля – получили результат…
phoenixaa
phoenixaa 3 июня 2014 23:28
Спасибо. Простое решение не всегда доходит… Заодно спрошу еще один вопрос, совсем для меня сложный… Включил я в шаблоне стандартный блок «похожие новости», но сначала сам не знал, что и как делать… Устанавливал то одно значение, то другое… В результате на страницах разное количество похожих ссылок: где 3, где 5, в общем от 3 до 8… Смотрится, наверное, по меньшей мере странно… Сейчас думаю сделать одинаково во всех. Взять ваш модуль и установить стандартно 8 к каждой новости. Но возникают сомнения: ведь после замены все страницы изменятся и будут переиндексироваться. Как начинающий хотел у вас спросить: так вообще делают? Это нормально? Или я по незнанию что-то лишнее выдумываю и только изобрету проблемы?
phoenixaa
phoenixaa 3 июня 2014 23:37
Не поймите неправильно, я смотрю на конкурентов - у них работают совсем сложные конструкции: на главной один блок, в полной новости два других блока, в категориях третий блок, на страницах пагинации вообще четвертый... Я не уверен, если стану все менять, не отразится ли это негативно на индексации? Не выпадут ли страницы из индекса из-за смены блоков типа "похожих новостей"?
ПафНутиЙ
ПафНутиЙ 7 июня 2014 23:42
по индексации я не подскажу, обратитесь к СЕО-специалистам.
Serj
Serj 30 июня 2014 15:55
Здравствуйте. Подскажите из за чего может возникать эта проблемка? Одна из картинок - большая.
фото проблемы http://file.sampo.ru/v4v8ff/
ПафНутиЙ
ПафНутиЙ 2 июля 2014 12:58
в указанном посте отсутствует изображение, поэтому оно было заменено на заглушку. Настройте картинку-заглушку или добавьте в css
img {max-width: 100%;}
AndreyKAZ
AndreyKAZ 15 июля 2014 15:23
Здравствуйте!
А подскажите, в чем может быть причина, что при работе модуля все ссылки на статьи сайта становятся вида:
http://site/index.php?newsid=100
Хотя, установлен ЧПУ2.
Заранее спасибо за ответ!
Serj
Serj 31 июля 2014 19:31
Добрый день. Подскажите пожалуйста.
На сайте кусок кода выводится цитатой...
[quote]{custom category="1,2,3" template="custom" aviable="main" navigation="yes" from="0" limit="10" fixed="no" order="date" cache="yes"}[/quote]

В новости он отображается корректно, а в модуле криво.

См. скриншоты...
Внимание! У Вас нет прав для просмотра скрытого текста.


В чем может быть проблема?
ПафНутиЙ
ПафНутиЙ 31 июля 2014 19:37
Разная фильтрация и всего.
Кладите исходный код в тег code
ddd1
ddd1 25 августа 2014 20:17
Доброго дня господа!

Возможно ли модулем выводить новости за сегодня, вчера, позавчера отдельными блоками?

У меня не получилось.
ddd1
ddd1 25 августа 2014 20:19
Пописываю к примеру: &day=3&dayCount=3

Выводит новости не за позавчера, а все до него.
ПафНутиЙ
ПафНутиЙ 25 августа 2014 20:42
&day=3&dayCount=2
так нужно
ddd1
ddd1 25 августа 2014 21:07
Хорошо, а можно вывести 3 блока с новостями:

Сегодня, вчера, позавчера?

Добавляю 3 вставки кода с параметрами:

&day=3&dayCount=1
&day=3&dayCount=2
&day=3&dayCount=3

Не получается. Что-то не так делаю?

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

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

Информация

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