Block.Pro.2.5

29.03
Block.Pro.2.5


Block.Pro.2 - Расширенный вывод блоков с новостями для DLE


Модуль для удобного и гибкого вывода новостей на любой странице DLE-сайта

Версия DLE: 9.5 (на других не проверялся, но работать должен)

Версия модуля: 2.5

Дата релиза: 29.03.2012

Автор: ПафНутиЙ

Контакты: http://pafnuty.name, Google+ или email

Модуль распространяется бесплатно для частного и коммерческого использования

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


Основные возможности модуля

  • Вывод популярных (топ по комментариям, рейтингу, просмотрам или как стандартный топ в dle), похожих, случайных (с возможностью отключения кеширования блока) или последних новостей.
  • Подключение модуля одной строкой непосредственно любой в шаблон (через include).
  • Простая и очень гибкая настройка вывода каждого блока.
  • Кеширование каждого блока (обновление кеша при добавлении новости или комментария на сайт) с возможностью отключения кеша для каждого блока.
  • Настройка категорий для вывода новостей (вывод только из определённых категорий, игнорирование определённых категорий, вывод или ингорирование новостей из просматриваемой категории)
  • Вывод уменьшенной копии картинки (в т.ч. и вместе с оригинальной картинкой) из короткой новости или дополнительного поля (картинки берутся только из папки uploads текущего сайта).
  • Автоматическое создание папки для уменьшенных копий изображений и выставление нужных прав.
  • Обрезка заголовка новости до заданного количества символов.
  • Обрезка текста новости (до заданного количества символов или до конца слова).
  • Ввод иконок категории.
  • Можно задать временной интервал для отбора новостей (по умолчанию 30дней).
  • Можно задать каждому блоку свой шаблон, свою картинку-заглушку.
  • Поддержка всех тегов, используемых в шаблонах кратких новостей.
  • Поддержка фильтра (перекрестные ссылки) по допполям, реализованного в DLE9.5
  • Можно указать с какой по счету новости начать вывод (например с 4й по 15ю).
  • Возможность быстрого редактирования новостей прямо из блока, аналогично стандартному функционалу


Установка модуля

  1. Скопировать файл block.pro.2.php в папку engine/modules/
  2. Скопировать содержимое папки THEME в папку с текущим шаблоном сайта
  3. В нужном месте прописать строку подключения модуля с обязательными параметрами:
    {include file="engine/modules/block.pro.2.php?&block_id=BLOCK&template=blockpro"}
    Где: BLOCK - Уникальный идентификатор блока blockpro - имя шаблона, используемого для вывода
  4. Настроить дополнительные параметры строки подключения и шаблон

Для вывода похожих новостей

  1. Отключить стандартный вывод похожих новостей в админке (Настройка системы » Оптимизация запросов к базе данных » Отображение похожих новостей » "нет")
  2. Открыть файл engine/modules/show.full.php перед
    if( $config['related_news']
    вставить
    /*Block.Pro - relatednews*/
    $block_id = 'related_'.$row['id']; //Не трогать!
    $relatedpro = "1"; //Не трогать!
    $template="relatednews"; // Имя шаблона (можно менять)
    include_once ENGINE_DIR . '/modules/block.pro.2.php';		
    /*Block.Pro - relatednews*/
  3. Настроить дополнительные переменные подключения модуля (Переменные приведены в таблице ниже. При вставке необходимо заменять символ & на $) и шаблон
  4. В ШАБЛОНЕ ПОЛНОЙ НОВОСТИ НИЧЕГО ДОПОЛНИТЕЛЬНО ПРОПИСЫВАТЬ НЕ НУЖНО! модуль выводится через стандартный тег похожих новостей.


Переменные строки подключения

Все переменные указываются непосредственно в строке подключения модуля.

В таблице дано описание возможных для использования переменных

Наименование переменной Значение по умолчанию Описание Примечание
&block_id   Обязательная переменная. Уникальный идентификатор блока любое, уникальное для каждого блока значение
&template   Обязательная переменная. Имя шаблона для вывода блока указывается только имя, без расширения .tpl
&day 30 Количество дней, за которое осуществляется отбор новостей. Если указать ноль (0) - будут браться новости за всё время. Переменная автоматически принимает нулевое значение, если в строке подключения определена переменная &last, &relatedpro или &rndom
&show_cat   Категория/категории для отбора новостей.

Категории указываются через запятую.

Если указать &show_cat=this - новости будут браться только из просматриваемой категории.

&ignore_cat   Модификатор переменной &show_cat. превращает указанные в &show_cat категории в игнорируемые. Для активации модификатора достаточно его определить (например &ignore_cat=y)
&start_from 0 Начало диапазона отбора новостей.  
&news_num 10 Количество новостей в блоке  
&img_xfield   Имя дополнительного поля для получения уменьшенного изображения.

Переменную нужно определять только тогда, когда требуется выводить картинку из дополнительного поля.

Одновременный вывод картинки из краткого содержимого и допполя невозможен.

В допполе должна лежать прямая ссылка на изображение.

&img_size 60x60 Размер уменьшенной копии изображения. (Ширина X Высота) Допустимо указывать одну цифру (например 100). тогда изображение будет уменьшено по большей стороне. при указании нуля (&img_size=0) изображение обрезаться не будет.
&noimage noimage.png Имя и расширение для картинки-заглушки, в случаи отсутствия изображения в новости. Картинка-заглушка должна располагаться в папке images текущего шаблона сайта.
&nocache   Модификатор, отключающий использование кеша для блока. Для активации модификатора достаточно его определить (например &nocache=y)

 

&random

&last

&top_comm

&top_rating

&top_views

 

Варианты сортировки новостей.

Случайным образом

По дате добавления

Самые комментируемые

Самые рейтинговые

Самые часто просматриваемые

По умолчанию выводятся топ-новости (по аналогии со стандартным топом DLE)

Недопустимо использование нескольких вариантов сортировки одновременно.

&wordcut   Модификатор, отключающий обрезку текста новости до конца слова и включающий обрезку до заданного количества символов. Для активации модификатора достаточно его определить (например &wordcut=y)
$relatedpro   Модификатор активирует механизм отображения похожих новостей. Указывается только при подключении модуля в файле show.full.php для вывода похожих новостей. Для активации модификатора достаточно его определить (например $relatedpro=y;)


Теги шаблона

В таблице приведены возможные для использования в шаблоне теги и их описание.

Обозначение тега шаблона Описание Примечание
{link-category} Ссылка/ссылки на категории  
{category} Наименование категории  
{category-icon} Иконка/иконки категорий При отсутствии иконки берётся картинка {THEME}/images/no_icon.gif
[xfvalue_name] Значение дополнительного поля "name", где "name" название дополнительного поля  
[xfgiven_name] [xfvalue_name] [/xfgiven_name] Выводится дополнительное поле "name", если поле не пустое, если поле не имеет значения, то текст просто вырезается  
[xfnotgiven_name] текст [/xfnotgiven_name] Выводят текст указанный в тегах, если дополнительное поле не было задано при публикации новости, где "name" это имя дополнительного поля  
{image-X} Выводит URL уменьшенной картинки находящейся в краткой новости, где Х это номер картинки в новости, например {image-1} выведет URL первой картинки в краткой новости  
{image_original} Выводит URL оригинальной картинки, указанной в {image-X}  
[image_original] текст [/image_original] Выводят текст указанный в тегах, если есть {image_original}  
[not_image_original] текст [/not_image_original] Выводят текст указанный в тегах, если нет {image_original}  
{rating} Выводит рейтинг  
{vote-num} Выводит количество проголосовавших  
[profile] текст [/profile] Выводят прямую ссылку на профиль автора публикации, без использования всплывающего окна минипрофиля.  
{login} Выводит логин пользователя добавившего новость в виде обычной текстовой информации без ссылок на профиль и карточку пользователя.  
{author} Ссылка на автора новости  
{date} Дата новости в формате, установленном в настройках движка  
{date=X} Дата новости в пользовательском формате  
{title} Заголовок новости  
{title limit="X"} Заголовок новости, обрезанный до X символов.  
{text} Текст новости (аналог {short-story})  
{text limit="X"} Текст новости, обрезанный до указанного X количества символов, при этом обрезание текста происходит до последнего логического слова, а не обрывает текст на середине слова.  
{full-link} URL полной новости  
{comments-num} Количество комментариев к новости  
{views} Количество просмотров новости  
[edit] текст [/edit] Ссылка на редактирование новости  

v.2.5.1

  • Модуль адаптирован под DLE 9.6
  • Функция показа похожих новостей временно не работает.

v.2.5

  • Финальная версия, больше изменений делать не планирую.
  • Исправленны все заявленные ошибки.

v.2.5 (RC от 16.03.2012) - проверены окончательно не все функции!

  • В очередной раз всё перелопатил, исправил косяки и неровности, и немалую лепту внёс опять Роман (Giseg), за что ему опять ещё большее спасибо!
  • Добавлена возможность вывода новостей только из той категории, в которй находится пользователь, либо из всех, кроме текущей (при указании переменной &ignore_cat, каждый блок по преждему кешируется.
  • Добавлена возможность быстрого радактирования новостей прямо из блока, аналогично стандартному функционалу.
  • Добавлена поддержка фильтра (перекрестные ссылки) по допполям, реализованного в DLE9.5.
  • Немного улучшена процедура формирования запросов в БД.
  • Можно указать с какой новости начать вывод, для этого в строке подключения нужно указать переменную &start_from=1 (в этом случаи вывод начнётся со второй, попавшей в диапазон, новости). По умолчанию переменная равна нулю и выводятся все новости. Это может понадобиться, когда нужно вывести одну или две новости с одним шаблоном, а остальные с другим).
  • Устранены ошибки при обработке картинок в новости (добавлена дополнительная проверка, что бы картинки со сторонних сайтов уж точно не пролазили и не вызывали глюков))).
  • Добавлена возможность выводить оригинальную картинку, не обрезая её (в строке подключения достаточно указать &img_size=0).
  • Добавлен вывод оригинальной картинки, если происходит её уменьшение. Для этого в шаблон нужно вставить тег {original_img}. Так же доступны теги
    [image_original]текст[/image_original] и [not-image_original]текст[/not-image_original]
    которые выводят текст если есть или нет картинки.
  • Добавлен вывод рейтинга.
  • Добавлена возможность более тонкой сортировки новостей - по количеству комментариев (в строке подключения указываем &top_comm=y), по рейтингу (&top_rating=y), по просмотрам (&top_views=y). ВНИМАНИЕ! - не указывайте одновременно несколько вариантов сортировки
  • Добавлена возможность отключать кеширование блока непосредственно в строке подключения, для этого в строке подключения нужно указать переменную &nocache=y (пригодится в процессе настройки блока).
  • Для картинки-заглушки введена переменная &noimage в которой можно задать название файла (имя и расширение) для картинки-заглушки (по умолчанию эта переменная имеет вид: &noimage=noimage.png). картинка-заглушка по прежнему должна лежать в папке images текущего шаблона.
  • Переменная &category заменена на &show_cat (обнаружил, что в DLE есть глобальная переменная $category, переименовал на всякий случай).
  • Переменная &bad заменена на &ignore_cat для большей внятности кода.
  • Исправлена переменная {comm_num} на {comments-num} как она пишется в стандартных шаблонах DLE.
  • [админам] Возможность выводить время выполнения модуля. Пригодится для отладки (видеть будет только группа id=1) Смотрите закомментрованные строки ниже в коде и в самом конце файла.

v.2.4

  • Добавлено автоматическое создание папки blockpro и установка необходимых прав, даже если они были сбиты (например при переезде на новый хостинг).
  • Изменена методика создания уменьшенных копий картинок - теперь скрипт берёт только те картинки, которые лежат в папке uploads сайта (все картинки, которые загружаются на сайт обычно туда и попадают). Если картинка будет лежать на сторонем сайте она будет проигнорирована и вместо неё выведется заглушка. Это сделано в целях безопасности сайта и устраниения проблемы с белым листом (Not Supported File! Thumbnails can only be made from .jpg, gif and .png images!), которая возникала при определённых обстоятельствах.
  • За изменения в этой версии отдельное спасибо отличному пограммисту Роману (Giseg), если бы не он - врядли были бы эти важные исправления!

v.2.3

  • Исправлена ошибка, работы с категориями. При указании категорий, из которых следует выводить новости, они наоборот скрывались.
  • Изменен синтаксис перечисления категорий для вывода/скрытия. Теперь категории нужно перечислять через запятую, по аналогии с тем же custom к примеру.

v.2.2

  • Добавлена возможность подключить модуль для вывода похожих новостей (отдельное спасибо Sander`у за исправление моих косяков при перелопачивании кода).
  • Переписаны имена "модульных" переменных, чтоб не было конфликтов при выводе похожих новостей.

v.2.1(релиза не было)

  • Исправлена и оптимизирована функция обрезания содержимого новостей (в некоторыx, непонятныx для меня случаяx содержимое обрезалось полностью). За доработку спасибо nowheremany.
  • Изменён вывод блока с новостями. Теперь блок выводится без "обёртки" в общий div с id равным переменной &block_id. (исправлено на случай использования в шаблоне для обёртки новости тегов
    <li></li>
    и оборачивания строки подключения в
    <ul></ul>
    . В этом случаи блок не проxодил валидацию и не корректно обрабатывался в качестве слайдера (плагин jcarousel)
  • Исправлены мелкие ошибки, допущенные в прошлой версии по невнимательности или лени )))

v.2.0

  • код модуля переработан.
  • модуль переведён на работу с шаблонами.
  • убраны лишние комментарии, тот кто разбирается и так поймёт, а чайнику дорога на www.dle-faq.pro


Техническая поддержка модуля осуществляется только по указанным контактным данным

Но это не означает, что техподдержка будет оказана :)

P.S. Пример использования модуля вы можете лицезреть на этом сайте, прямо чуть ниже ссылки на скачивание выводятся похожие новости.

ВНИМАНИЕ!

Все обсуждения модуля теперь только в этой теме или на сайте

Комментарии

shadow6630
shadow6630 31 октября 2012 21:10
ПафНутиЙ,
бывает)
Softg
Softg 2 ноября 2012 00:02
Block.pro дает больше нагрузки на сервер нежели обычный {custom} ?
(с использованием тех же функции)
ПафНутиЙ
ПафНутиЙ 2 ноября 2012 00:10
да. по расходу памяти в 2-3 раза, если использовать одинаковые настройки. Но не вжу смысла спользовать его как custom. При выводе похожих новостей - память, как ни странно, расходуеся гораздо меньше.
А вообще советую воспользоваться модулем showstat для отслеживания ресурсов.
Softg
Softg 2 ноября 2012 01:07
Спасибо, обязательно гляну.
NeReal
NeReal 6 января 2013 06:41
После патча http://dle-news.ru/bags/v97/1547-patchi-bezopasnosti-dlya-versiy-97-i-nizhe.html
Модуль перестал работать, пишет Filtered
NeReal
NeReal 6 января 2013 07:26
А на другом сайте ошибка вылетает - Fatal error: Call to a member function clear() on a non-object in ****\engine\modules\bl.php on line 442
Как тут уже писали из-за php может быть или из за нула, у меня лицензия и все это пошло после патча
ПафНутиЙ
ПафНутиЙ 6 января 2013 17:23
как выглядит строка подключения?
NeReal
NeReal 6 января 2013 20:25
ПафНутиЙ,
Уже заработал на обеих сайтах, после того как celsoft внес изменения в патч, вот в теме он писал http://forum.dle-news.ru/index.php?showtopic=61979
ПафНутиЙ
ПафНутиЙ 6 января 2013 20:38
Ну и хорошо, хотя я так и не понял суть патча. Инклуд можно добавить имея доступ к шаблону на запись, а если иметь такой доступ - тут уже никакой патч не поможет.
Donx
Donx 23 января 2013 04:20
ПафНутиЙ, здравствуйте, пролистав все 11 страниц с вопросами так и не нашел решения. Решил спросить сам. Ошибка следующая:
Not Supported File! Thumbnails can only be made from .jpg, gif and .png images!
наткнулся на ваш ответ
ПафНутиЙ
такая вешь происходить только в одном случаи - невозможность прочитать файл. (как правило, когда картинка находится на другом ресурсе.)
но дело в том что все располагается на одном "ресурсе" и ссылки в доп поле с абсолютным адресом.
подключение -
{include file="engine/modules/block.pro.2.php?&block_id=ran&template=ran&random=y&news_num=3&img_size=120x100&img_xfield=photo"}

и шаблон - 
<img src="[xfvalue_photo]" alt="{title}" /> 
проверял на 2 версиях дле: 9.4, 9.5 На хостинге и в среде openserver, ошибка вылазила в любом случае. С чем еще может быть связанна проблема?
ПафНутиЙ
ПафНутиЙ 23 января 2013 09:05
проблема в thumb.class.php - с ним постоянно какие то глюки, очень капризный класс, если использовать его не по назначению (а назначение его - создавать уменьшенные копии при загрузке на сервер). К сожалению ничего поделать с этим нельзя.
Как вариант попробуйте вывести три последних новости. Возможно где то всё же "неправильная" фотография.
Если не получится - придётся отказаться от вывода блока через модуль.
Donx
Donx 23 января 2013 14:42
по назначению thumb мне не нужен, насчет фотографий сразу подумал что может быть из за того что фотографии crw были и я их как то не правильно "перевел" в jpeg (пользовался fs, сохранял для веб и устройств) но потом создал простую картинку в paint и выдавало все тоже самое.
ПафНутиЙ
ПафНутиЙ 23 января 2013 14:49
jpeg или jpg ?
Это критично.
Not Supported File! Thumbnails can only be made from .jpg, gif and .png images!
Donx
Donx 23 января 2013 20:12
извиняюсь, jpg. как можно заставить его работать? не важно на какой версии дле не важно с какими настройками, мне главное чтобы ваш модуль работал =)
Donx
Donx 23 января 2013 23:41
нашел выход очень кривой, но для моих целей сойдет. Но теперь возникла еще одна проблема - при выводе блока в новости в блок попадает и та новость в которой находится пользователь, подскажите пожалуйста как можно исправить. feel
ПафНутиЙ
ПафНутиЙ 23 января 2013 23:48
&post_id=this&ignore_post_id=y
Donx
Donx 24 января 2013 00:00
ПафНутиЙ,
Спасибо!
prpobed5
prpobed5 14 марта 2013 21:21
Добрый вечер, Павел. Вы приводили пример использования модуля Block.pro в качестве ротатора новостного контента здесь : http://old.blockpro.ru/examples.html
При этом использовали скрипт Slidorion, выполненный в стиле аккордеона. Все замечательно работает.
Я попытался средствами CSS избавиться от аккордеона. В принципе получилось, но есть момент в отображении стартового слайда.
Подскажите, пожалуйста, как оптимальнее вместо Slidorion подключить другой скрипт, чтобы получить более стандартное переключение, например как здесь: http://demo.webdeveloperplus.com/featured-content-slider/
ПафНутиЙ
ПафНутиЙ 14 марта 2013 22:01
Ответил на blockpro.ru
nomid
nomid 14 мая 2013 14:19
Здравствуйте ПафНутиЙ.
Есть возможность вставить/впихнуть как-то в статическую страницу сайта сгенерированный код (! без картинок, и соответсвенно все что касается настроек для картинок оставил пустым)?
Скажем, мне нужно для вывода ТОПа анекдотов (просмотры и оценки за 120 дней), так: http://www.webik.info/top.html
Сгенерированный код:
Внимание! У Вас нет прав для просмотра скрытого текста.
ПафНутиЙ
ПафНутиЙ 14 мая 2013 14:22
уберите настройки картинок из строки подключения и уберите теги картинок из шаблона, ничего выводиться не будет.
nomid
nomid 14 мая 2013 14:28
ПафНутиЙ,

А в стат. страницу просто вставить код, при этом указав а настройках "Исходный текст HTML без фильтрации и изменений" получиться? :(
ПафНутиЙ
ПафНутиЙ 14 мая 2013 14:30
нет, код нужно прописать в .tpl файл и уже этот шаблон подключить к стат странице.
nomid
nomid 14 мая 2013 14:31
Блин, точно! wink
Сам бы точно не додул.
Спасибо! И за отзывчивость!
nomid
nomid 14 мая 2013 18:44
Что-то не то. Сгенерировал разные строки для подключения, основные переменные только две - рейтинг и просмотры, а выводятся одни и те же материалы.


<h3 class="h2top">Лучшие анекдоты по рейтингу за неделю</h3>
{include file="engine/modules/block.pro.2.php?&block_id=block_rate&template=blockpro_rate&day=7&top_rating=y&cache_live=0"}

и дальше такой тип:

<h3 class="h2top">Лучшие анекдоты по просмотрам за год</h3>
{include file="engine/modules/block.pro.2.php?&block_id=block_rate&template=blockpro_rate&day=365&top_views=y&cache_live=0"}


cache_live=0 для начала и тестов 0, потом исправлю.
Страница: http://www.webik.info/top.html
Или я что-то не то сделал? :(
ПафНутиЙ
ПафНутиЙ 14 мая 2013 19:38
переменная &block_id должна быть уникальна для каждого блока.
у вас старая версия DLE, почему используете старый модуль?
nomid
nomid 14 мая 2013 21:53
Просто прописать &block_id=block_rate1 далее &block_id=block_rate2 и так далее?

Версия DLE 9.5 и для нее использовать Block.Pro.3 вроде нельзя?! Только с версии 9.6, к сожалению...
Не планируете хотя бы для 9.5 сделать?)

P.S. Очень благодарен за модуль, переоценить его невозможно, спасибо!!!
nomid
nomid 14 мая 2013 22:11
Просто прописать &block_id=block_rate1 далее &block_id=block_rate2 и так далее?

И, наверное в моей ситуации, нужно для каждого блока создавать .tpl типа blockpro_rate1.tpl, blockpro_rate2.tpl и т.д.
ПафНутиЙ
ПафНутиЙ 15 мая 2013 12:48
отдельный шаблон для блока не обязательно, если внешний вид их одинаков.
77jj77
77jj77 23 июня 2013 17:38
Павел скажи пожалуйста,что и где над удалить что-бы картинки в модуле отоброжались гостям

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

Информация

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

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