» » BlockPro — модуль профессионального вывода новостей для DLE

BlockPro — модуль профессионального вывода новостей для DLE

28.09
165
40 306
BlockPro — модуль профессионального вывода новостей для DLE


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

Требования к системе


Версия DLE: 10.2 и выше (Поддержка ранних версий пока не планируется.)
Поддерживаемая кодировка: UTF-8
Версия php: 5.3 и выше
Автор: ПафНутиЙ
Максимальная цена: 840р (про скидки ниже).


Почему принципиально новая версия?


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

- Собственный класс для работы с БД. Класс SafeMySQL позволяет избавиться от лишних проверок данных, поэтому код модуля выглядит более лаконичным, а работа безопасна.

- Продуманная AJAX навигация. Можно использовать неограниченное число блоков с новостями, имеющими навигацию на любой странице, при этом каждый блок не будет зависеть от остальных, а страницы будут кешироваться. Для удобства использования есть 4 варианта отображения навигации, а изменить внешний вид кнопок навигации очень легко средствами CSS.

Возможности BlockPro


Те, кто знаком с Block.Pro.3 знают насколько удобен в использовании этот модуль. Так вот новая версия BlockPro стала ещё удобнее, а гибкость вывода контента в шаблоне на сегодняшний день не имеет аналогов.

Админка


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

- Генератор строк подключения в админке. С помощью генератора, учитывающего особенности именно вашего сайта, можно легко составить нужную строку подключения и сразу же посмотреть результат вывода.

BlockPro — модуль профессионального вывода новостей для DLE


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

BlockPro — модуль профессионального вывода новостей для DLE

BlockPro — модуль профессионального вывода новостей для DLE


Вывод контента


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

- Фильтрация новостей по значению дополнительных полей. Новости можно фильтровать по значению одного или нескольких дополнительных полей, при этом можно использовать логику "И" (совпадение нескольких значений) или "ИЛИ" (совпадение любого из значений).

- Показ новостей, находящихся на модерации.

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

- Вывод аватара автора новости без дополнительных запросов. При этом если вывод не включен - лишние данные из БД не запрашиваются.

- Сортировка новостей:
1. Стандартный топ dle
2. Хит (рейтинг*100 + кол-во комментариев*10 + кол-во просмотров)
3. По дате добавления
4. По рейтингу
5. По количеству просмотров
6. По количеству комментариев
7. В случайном порядке
8. В алфавитном порядке
9. Без сортировки (используется, если нужен вывод похожих новостей)
В следующих обновлениях уже запланированы дополнительные сортировки.

- Фильтрация новостей:
1. По авторам
2. По категориям
3. По ID новостей
4. По тегам новостей
5. Новости на модерации
6. По заполненным дополнительным полям
7. По значениям дополнительных полей
8. Фиксированные новости (только фиксированные, только обычные или все подряд)
В следующих обновлениях уже запланированы дополнительные фильтрации, в т.ч. по нестандартным полям.

- Подключение одной строкой в любой шаблон сайта. Как и раньше достаточно одной строки без правок движка!
- Вывод похожих новостей.
- Кеширование каждого блока с возможностью установки времени жизни или отключения кеша для каждого блока. Так же кешируются и блоки, показываемые через ajax.
- Вывод новостей за заданный интервал времени (к примеру новости, добавленные за прошлую неделю)


Установка:


1. Распаковать содержимое папки upload из архива в корень сайта. Имейте ввиду, что необходимо предварительно переименовать папку upload/THEME в соответствии с именем вашего шаблона сайта.
2. Запустить установщик по адресу ваш_сайт/blockpro_install.php и следовать инструкциям.
3. По окончании установки сгенерировать строку подключения модуля, посмотреть полученный результат и, если устроит, вставить строку подключения в нужное место шаблона сайта.

Строка подключения и теги шаблона


Детальная информация о строке подключения, тегах и модификаторах модуля расположена на странице документации к модулю и при появлении нового функционала добавляются соответствующие пункты в документацию.


Про системные требования


Как вы могли заметить, системные требования к модулю так же отличаются от предыдущего.
Модуль с большой вероятностью будет работать и на DLE 9.6 с кодировкой windows-1251, но я не гарантирую корректную работу, да и поддерживать столь старые системы не вижу смысла.
Решение об отказе от 1251 и окончательном переходе на UTF-8 было принято уже давно и переубедить меня в этом вопросе не удастся, считайте это принципиальным моментом.
Однако по заявлениям бетатестеров модуль прекрасно себя чувствует на боевом сайте 10.1 c кодировкой windows-1251.

Небольшой бонус


Всем, кто участвовал в бетатесте модуля я дам купон на 30% скидку.
А тем, кто успеет, вот список из 10 купонов на 15% скидку:


Купить BlockPro

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

Комментарии

aluminoter
aluminoter 18 января 2015 15:46
Можно что-нибудь сделать с уменьшенными картинками которые повторяються.
Суть такая: фотки находятся в папках по дням, и иногда имеют одинаковые названия с другими фотками с других папок.
Если делать уменьшенную фотку то он ее кидает в /base/100x100 и все фотки которые имею одно название скидываются в эту папку.
Хотелось бы что если фотка имеет одинаковое название, ей присваивался дополнительный индекс.
Например: Фото_1, Фото_2 и т.д.
ПафНутиЙ
ПафНутиЙ 18 января 2015 18:54
Обычно, когда фото заливается на сайт - ей присваивается уникальное имя. Возможно вы вносили изменения в файлы движка, поэтому имена совпадают.

Попробуйте передавать в качестве параметра subfolder дату новости или категорию.
aluminoter
aluminoter 18 января 2015 19:49
Цитата: ПафНутиЙ
subfolder

Вот так не работает:
{$image|image:$noimage:'small':'1':'127x185':'80':'crop':true:false:'{$el.date}'}
ПафНутиЙ
ПафНутиЙ 18 января 2015 20:11
{$image|image:$noimage:'small':'1':'127x185':'80':'crop':true:false:$el.date}
aluminoter
aluminoter 18 января 2015 21:10
Цитата: ПафНутиЙ
{$el.date}


А как сделать чтобы заработало:
$el.date|dateformat:"d-m-Y"
ПафНутиЙ
ПафНутиЙ 18 января 2015 22:15
{set $subfolder = $el.date|dateformat:"d-m-Y"}
{$image|image:$noimage:'small':'1':'127x185':'80':'crop':true:false:$subfolder}
aluminoter
aluminoter 18 января 2015 22:19
Точно!!! Спасибо. Что то я совсем плохой стал.
ПафНутиЙ
ПафНутиЙ 18 января 2015 22:43
Ничего, всётаки нестандартный шаблонизатор использовать не так просто, если нет практики.
Для этого и есть техподдержка в моём лице smile
vadims
vadims 22 января 2015 20:03
Из описания и документации, как я понял, сортировать по алфавиту подкатегории + новости нельзя?
Например вывод новостей так -
А подкатегория (название)
А новость (из А подкатегории)

Б подкатегория (название)
А новость (из Б подкатегории)

....

или 2-ой вариант, где подкатегория указывается 1 раз, например -
А подкатегория (название)
А Новость (из А подкатегории, сортировка по алфавиту)
Б Новость (из А подкатегории, сортировка по алфавиту)
Г Новость (из А подкатегории, сортировка по алфавиту)

Б подкатегория (название)
А Новость (из Б подкатегории, сортировка по алфавиту)
Б Новость (из Б подкатегории, сортировка по алфавиту)
Г Новость (из Б подкатегории, сортировка по алфавиту)
ПафНутиЙ
ПафНутиЙ 22 января 2015 21:46
Автоматически нельзя, но можно прописать несколько строк подключения, в каждой указать нужную категорию и отсортировать новости по алфавиту.
vadims
vadims 22 января 2015 22:03
ПафНутиЙ,
Тогда смысла использования модуля нету =)
ибо можно обойтись стандартными методами... что очень печально =(

Почему в Вашем модуле нету возможности сортировки категорий (и сортировка категорий + сортировка новостей сразу)? =) Ведь не только для меня (наверное) это актуально + расширяет возможности модуля.

P.S. Есть ли разница в запросах к бд и нагрузке, при использование подобного вывода -
1. Стандартным выводом по алфавиту
2. Модуль Block.Pro по алфавиту

если, на 1 странице будет ~20 блоков?
ПафНутиЙ
ПафНутиЙ 22 января 2015 22:33
Ну так я и не заставляю вас его использовать.
Возможности сортировки категорий (и сортировка категорий + сортировка новостей сразу) нет потому, что в этом нет смысла. Вы первый человек за наверное 2 года, которому такой функционал понадобился.

Модуль предназначен не для замены стандартного вывода, а для реализации нестандартного.
Для определения необходимости использования модуля рекомендую ознакомиться с таблицей сравнения функционала модуля с custom.

Сравнение производительности модуля с custom я приводил тут
vadims
vadims 22 января 2015 23:14
ПафНутиЙ,
"Модуль предназначен не для замены стандартного вывода"
Как раз, если бы еще была сортировка по категориям, то было бы еще большая замена стандартного вывода =)

А может можно что-то добавить в коде и тогда будет + сортировка подкатегорий?
ПафНутиЙ
ПафНутиЙ 22 января 2015 23:21
Оно того не стоит. Усложнение модуля из-за сомнительно полезности функционала я точно делать не буду. Не исключаю возможности, что вывод 20 строк подключения окажется к тому же более эффективным, чем вывод одной строки, но с подобной сортировкой.
vadims
vadims 23 января 2015 00:01
ПафНутиЙ,
Спасибо! Может Вы и правы =)
vadims
vadims 23 января 2015 01:15
Возможно ли сделать так в одном блоке? -
В начале блока 1 раз вставить {$el.category|catinfo:'name'} (чтобы выводилась название категории)
Далее - новости по алфавиту из категории (например 20 новостей)
и в конце блока 1 раз вставить < br >

после второй, третий, четвертый...20-ый блок и у всех по 3 пункта таких.


или для подобного вывода нужно подключать сразу по 3 блока? :D
1. Для названия категории и указывать 1 новость.
2. Новости по алфавиту из категории
3. < br > и указывать 1 новость

P.S. Так как в моем случае, так как нет сортировки категорий по алфавиту, я не могу сделать "Библиотеку" и прийдется каждого автора подключать отдельным блоком. Это 300 авторов на 1 странице (при сортировке по доп. полям выводить будет 50-60). Если еще и добавить снос нельзя и название категории отдельным блоком, тогда, 300 х 3 = 900 блоков на 1 странице.
Мой VPS от одного запроса такого не сляжет? :)
nosmoking
nosmoking 9 февраля 2015 19:08
Здравствуйте, как в полной новости вывести картинку из дополнительного поля с помощью блок про?
ПафНутиЙ
ПафНутиЙ 9 февраля 2015 19:48
http://bp.pafnuty.name/examples/#5b92de857c847c7bdefb
nosmoking
nosmoking 10 февраля 2015 02:06
Спасибо, но почему-то не захотело выводить картинку. Путем научного тыка подобрал, вроде бы работает.
<div id="{$block_id}">
{* Устанавливаем картинку-заглушку *}
{set $noimage}
	{* В данном примере оно и не особо нужно т.к. картинка у нас в любом случаи будет, но всё же... *}
	{$theme}/blockpro/noimage.png
{/set}
{*Пробегаем по массиву с новостями*}
{foreach $list as $key => $el}				
	{* Определяем переменную, в которой будет картинка *}
	{set $poster}
		{if $el.xfields['poster']}
			{* Если в допполе есть ссылка на картинку - подстваим её *}
			<img src="{$el.xfields['poster']}">
		{else}
			{* Если ссылки нет, подставим заглушку *}
			<img src="{$theme}/blockpro/noimage.png">				
		{/if}
	{/set}
	{* А теперь работаем с полученной картинкой *}
	<img src="{$el.xfields['poster']|image:$noimage:'small':'1':'83':'100':'crop':true:false:''}" alt="{$el.title}"></a>
{/foreach}
 
{* Информация о теге шаблоном set: https://github.com/bzick/fenom/blob/master/docs/ru/tags/set.md *}
</div> <!-- #{$block_id} -->
ПафНутиЙ
ПафНутиЙ 10 февраля 2015 22:27
вместо
<img src="{$el.xfields['poster']|image:$noimage:'small':'1':'83':'100':'crop':true:false:''}" alt="{$el.title}"></a>

напишите:
<img src="{$poster|image:$noimage:'small':'1':'83':'100':'crop':true:false:''}" alt="{$el.title}"></a>
nosmoking
nosmoking 12 февраля 2015 22:24
А как теперь в полной новости ее правильно вывести? Все время берет картинку из первой новости.
{include file="engine/modules/base/blockpro.php?template=blockpro/fullstory-img&cachePrefix=news&limit=1&fixed=yes&xfSearchLogic=OR&sort=top&order=new&pageNum=1&navStyle=cla
ssic"}
nosmoking
nosmoking 13 февраля 2015 00:44
Как вывести новости в searchresult.tpl? Если использовать
{include file="engine/modules/base/blockpro.php?template=blockpro/shortstory-img&cachePrefix=news&limit=1&fixed=yes&xfSearchLogic=OR&sort=hit&order=new&pageNum=1&navStyle=cl
assic"}

То все найденные новости будут ввести на первую найденную.
ПафНутиЙ
ПафНутиЙ 13 февраля 2015 19:22
в результаты поиска выводятся ID новостей. Предавайте их в строку подключения модуля.
vadims
vadims 17 февраля 2015 13:32
Так как нету пункта сортировки категорий + в блоке нельзя вывести что-то статическое, ну чтобы было только в начале блока 1 раз, то приходится по 2 блока для одной цели выводить.
Но не в этом дело. Сделал вывод 100 блоков. Все ок. 4 запросы в БД + 0.00177.
Но когда сделал вывод 1000 блоков, то 4 запроса, но обработка обработка запросов быстрая, запросов 4 но грузилось все секунд 10. Почему так? Много данных для обработки php?
ПафНутиЙ
ПафНутиЙ 17 февраля 2015 13:46
100 блоков (1 блок - 1 строка подключения) - это минимум 100 запросов. Запросы, отправляемые модулем не собираются в статистике DLE т.к. у модуля свой класс для работы с БД. Для отслеживания статистики по модулю нужно прописывать параметр &showstat=y в строку подключения.
Gleb
Gleb 18 февраля 2015 14:19
Здравствуйте!
Хотелось бы уточнить планируется ли обновление модуля в ближайшее время?
Поскольку планирую приобрести, но немного смущает то, что модуль достаточно редко обновляется
ПафНутиЙ
ПафНутиЙ 18 февраля 2015 14:36
Да, на этой неделе я планирую начать работу по обновлению.
Будет много нового.
А что вас не устраивает в текущем функционале?
Gleb
Gleb 18 февраля 2015 14:40
Нет, все устраивает.
Просто настороженно отношусь, поскольку приобретал множество модулей, поддержкой которых авторы совсем не занимались.
Еще хотелось бы уточнить, нет ли на текущий момент каких-либо скидкой? Пускай самых минимальных, но все же мелочь, а приятно smile
Axel
Axel 18 февраля 2015 15:34
Здравствуйте. Я немного не понял по поводу картинок... У меня на сайте используется модуль Miniposter PRO, с помощью которого я уменьшаю картинку для превью на главной, или для блока с "похожими новостями". Модуль хорош тем, что просто создает уменьшенную копию картинки и сохраняет ее в отдельную папку. У меня вот появилось желание перейти на Ваш модуль... Скажите, Ваш модуль так же может уменьшать картинку до указанного размера и помещать ее в отдельную папку? Торможу сейчас пока из-за неопределенности с картинками)

Вопрос №2.
Можно ли выводить модулем похожие новости только из той категории, что и новость? Или из глобальной категории?

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

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

Информация

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