Модуль 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 – обов’язкова змінна для того, що б повністю повторити функціонал стандартних схожих новин. А ось найцікавіше починається в шаблоні:
Модуль Block.Pro.3 [comments]({comments-num})[/comments]
{category-icon} {date=”d.m.Y”} | {short-story}
Крім заголовка і тексту новини, обрізаних до заданої кількості символів (до логічного завершення слова) у схожих новинах буде виведено кількість коментарів, іконка, або іконки категорій і дата новини, стандартні схожі новини цього поки не вміють. І все це без жодних правок движка.

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


Перший рядок підключення виведе три основних новини:
{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 PostId=1,5 Author=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, ніякі інші джерела не є офіційними і не гарантують вам наявність актуальної версії модуля.
57