Краткая информация
Block.Pro.2 - Расширенный вывод блоков с новостями для DLE
Модуль для удобного и гибкого вывода новостей на любой странице DLE-сайта
Версия DLE: 9.4+ (на более старых версиях не проверялся, работоспособность не гарантируется)
Версия модуля: 2.6.8
Дата релиза: 27.09.2012
Автор: ПафНутиЙ
Контакты: http://pafnuty.name, Google+ или email
Модуль распространяется бесплатно для частного и коммерческого использования
При публикации модуля на других сайтах не забывайте оставлять ссылку на первоисточник, уважайте чужой труд.
Основные возможности модуля
- Вывод популярных (топ по комментариям, рейтингу, просмотрам или как стандартный топ в dle), похожих, случайных (с возможностью отключения кеширования блока) или последних новостей.
- Подключение модуля одной строкой непосредственно в любой шаблон (через include).
- Простая и очень гибкая настройка вывода каждого блока.
- Кеширование каждого блока (обновление кеша при добавлении новости или комментария на сайт) с возможностью установки времени жизни или отключения кеша для каждого блока.
- Настройка категорий для вывода новостей (вывод только из определённых категорий, игнорирование определённых категорий, вывод или ингорирование новостей из просматриваемой категории)
- Вывод уменьшенной копии картинки (в т.ч. и вместе с оригинальной картинкой) из короткой новости или дополнительного поля (картинки берутся только из папки uploads текущего сайта).
- Автоматическое создание папки для уменьшенных копий изображений и выставление нужных прав.
- Обрезка заголовка новости до заданного количества символов.
- Обрезка текста новости (до заданного количества символов или до конца слова).
- Ввод иконок категории.
- Можно задать временной интервал для отбора новостей (по умолчанию 30дней).
- Можно задать каждому блоку свой шаблон, свою картинку-заглушку.
- Поддержка всех тегов, используемых в шаблонах кратких новостей.
- Возможность быстрого редактирования новостей прямо из блока.
- Поддержка фильтра (перекрестные ссылки) по допполям, реализованного в DLE9.5
- Можно указать с какой по счету новости начать вывод (например с 4й по 15ю).
- Фильтрация новостей по имени автора.
- Фильтрация новостей по дополнительным полям (проверяется только заполненность поля).
- new Фильтрация новостей по ID (работает по аналогии с фильтрацией по категориям)
- new Возможность задать "Время жизни" для кеша каждого блока.
Установка модуля
Для быстрого составления строки подключения воспользуйтесь Генератором
Простая установка
- Скопировать файл block.pro.2.php в папку engine/modules/.
- Скопировать содержимое папки THEME в папку с текущим шаблоном сайта.
- В нужном месте прописать строку подключения модуля с обязательными параметрами:
{include file="engine/modules/block.pro.2.php?&block_id=BLOCK&template=blockpro"}
Где:
BLOCK - Уникальный идентификатор блока
blockpro - имя шаблона, используемого для вывода. - Настроить дополнительные параметры строки подключения и шаблон.
Установка для вывода похожих новостей
- Скопировать файл block.pro.2.php в папку engine/modules/.
- Скопировать содержимое папки THEME в папку с текущим шаблоном сайта.
- Отключить стандартный вывод похожих новостей в админке (Настройка системы » Оптимизация запросов к базе данных » Отображение похожих новостей » "нет")
- Открыть файл engine/modules/show.full.php
найти строку, содержащую текст:
ПЕРЕД ней вставитьif( $config['related_news']
/*Block.Pro - relatednews*/ $block_id = 'related_'.$row['id']; //Не трогать! $relatedpro = "1"; //Не трогать! $template="relatednews"; // Имя шаблона (можно менять) /*Начало Дополнительные парамерты*/ //Сюда можно вписывать дополнительные параметры подключения модуля, не забывая про синтаксис php. /*Конец Дополнительные парамерты*/ include_once ENGINE_DIR . '/modules/block.pro.2.php'; //Не трогать! /*Block.Pro - relatednews*/
- Прописать дополнительные параметры подключения модуля (Переменные приведены в таблице ниже. При вставке необходимо заменять символ & на $, значения переменных заключать в кавычки, в конце строки ставить точку с запятой).
- Настроить шаблон.
- Похожие новости будут выводиться стандартным тегом {related-news}, дополнительных строк подключения в шаблон полной новости писать не требуется.
Переменные строки подключения
Все переменные указываются непосредственно в строке подключения модуля.
В таблице дано описание возможных для использования переменных
Наименование переменной | Значение по умолчанию | Описание | Примечание |
---|---|---|---|
&block_id | Обязательная переменная. Уникальный идентификатор блока | любое, уникальное для каждого блока значение | |
&template | Обязательная переменная. Имя шаблона для вывода блока | указывается только имя, без расширения .tpl | |
&day | 30 | Количество дней, за которое осуществляется отбор новостей. Если указать ноль (0) - будут браться новости за всё время. | Переменная автоматически принимает нулевое значение, если в строке подключения определена переменная &last, &relatedpro или &rndom |
&show_cat | Категория/категории для отбора новостей. | Категории указываются через запятую. Если указать &show_cat=this - новости будут браться только из просматриваемой категории. |
|
&ignore_cat | Модификатор переменной &show_cat. превращает указанные в &show_cat категории в игнорируемые. | Для активации модификатора достаточно его определить (например &ignore_cat=y) | |
&post_id | new Фильтрация новостей по их ID | ID новостей указываются через запятую. Если в строке подключения указать &post_id=this&ignore_post_id=y Будут отбираться все новости, кроме той новости, в которой находится пользователь.
|
|
&ignore_post_id | new Модификатор переменной &post_id. Превращает ID, указанные в &post_id в игнорируемые. | Для активации модификатора достаточно его определить (например &ignore_post_id=y). Пример использования указан строкой выше. | |
&start_from | 0 | Начало диапазона отбора новостей. | |
&news_num | 10 | Количество новостей в блоке | |
&img_xfield | Имя дополнительного поля для получения уменьшенного изображения. | Переменную нужно определять только тогда, когда требуется выводить картинку из дополнительного поля. Одновременный вывод картинки из краткого содержимого и допполя невозможен. В допполе должна лежать прямая ссылка а изображение. |
|
&img_size | 60x60 | Размер уменьшенной копии изображения. (Ширина X Высота) | Допустимо указывать одну цифру (например 100). тогда изображение будет уменьшено по большей стороне. при указании нуля (&img_size=0) изображение обрезаться не будет. |
&noimage | noimage.png | Имя и расширение для картинки-заглушки, в случаи отсутствия изображения в новости. | Картинка-заглушка должна располагаться в папке images текущего шаблона сайта. |
&nocache | Модификатор, отключающий использование кеша для блока. | Для активации модификатора достаточно его определить (например &nocache=y) | |
&cache_live | Переменная, задающая время жизни кеша блока. Указывается в секудах. |
Например если нужно, чтобы блок обновлялся каждые сутки: &cache_live=86400 При формировании блока модуль проверяет время жизни кеша блока и если оно превышает или равно указанному в переменной - создаёт новый файл кеша. |
|
&random &last &top_comm &top_rating &top_views |
Варианты сортировки новостей. Случайным образом По дате добавления Самые комментируемые Самые рейтинговые Самые часто просматриваемые |
По умолчанию выводятся топ-новости (по аналогии со стандартным топом DLE) Недопустимо использование нескольких вариантов сортировки одновременно. Для активации модификатора достаточно его определить (например &random=y) - будут выводиться случайные новости |
|
&wordcut | Модификатор, отключающий обрезку текста новости до конца слова и включающий обрезку до заданного количества символов. | Для активации модификатора достаточно его определить (например &wordcut=y) | |
&author | Фильтрация новостей по имени автора | Указать в строке подключения переменную &author={usertitle} для вывода новостей автора на странице его профиля. Так же {usertitle} можно заменить на имя автора. Важно! тег {usertitle} будет работать только при вставке строки подключения в шаблон userinfo.tpl |
|
&xfilter | Фильтрация новостей по дополнительным полям | В фильтр попадают только новости, у которых заполнено указанное дополнительное поле (в строке подключения нужно указать переменную &xfilter=image, text - в этом случаи будут отобранны только те новости, в которых заполненны допполя image и text) | |
$relatedpro | Модификатор активирует механизм отображения похожих новостей. Указывается только при подключении модуля в файле show.full.php для вывода похожих новостей. | Для активации модификатора достаточно его определить (например $relatedpro=y;) | |
&showstat | Модификатор активирует показ времени генерации блока для пользователя с ID=1 (Администратор) | Для активации модификатора достаточно его определить (например $showstat=y;) |
Теги шаблона
В таблице приведены возможные для использования в шаблоне теги и их описание.
Обозначение тега шаблона | Описание | Примечание |
---|---|---|
{link-category} | Ссылка/ссылки на категории | |
{category} | Наименование категории | |
{category-icon} | Иконка/иконки категорий | При отсутствии иконки берётся картинка {THEME}/images/no_icon.gif |
{category-url} | Ссылка на категорию в чистом виде | |
[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 символов. | |
{short-story} | Текст новости. | начиная с версии 2.6.5 тег {text} заменен на {short-story} |
{short-story limit="X"} | Текст новости, обрезанный до указанного X количества символов, при этом обрезание текста происходит до последнего логического слова, а не обрывает текст на середине слова. | начиная с версии 2.6.5 тег {text limit="X"} заменен на {short-story limit="X"} |
{full-link} | URL полной новости. | |
{comments-num} | Количество комментариев к новости. | |
{views} | Количество просмотров новости. | |
{news-id} | Выводит ID новости. | |
[comments] текст [/comments] | Выводят текст, заключенный в них, если у новости есть комментарии. | |
[not-comments] текст [/not-comments] | Выводят текст, заключенный в них, если у новости нет комментариев. | |
[allow-comm] текст [/allow-comm] | new Если комментарии к новости запрещены - текст между тегами будет вырезан |
2.6.9
- Добавлен потерянный когда то тег {news-id}
2.6.8
- Исправлена ошибка в DLE 9.7
2.6.7
- Исправлена ошибка с фильтрацией по нескольким авторам
2.6.6
- Исправлена ошибка с выводом ссылки на оригинальную картинку
2.6.5
- Исправлена ошибка с созданием уменьшенных картинок из ничего
- Исправлены некоторые ошибки при работе с мемкешем
- Добалены теги {news-id}, [comments], [not-comments]
- Тег {text} заменён на {short-story}
- Тег {text limit="X"} заменён на {short-story limit="X"} для удобства использования стандартных шаблонов DLE
- Добавлен тег [allow-comm] и [/allow-comm] - если комментарии к новости запрещены - текст между тегами будет вырезан
2.6.4
- Убрана возможность редактирования новостей в блоке из-за проблем с кешированием этого тега и показа ссылки на редактирования гостям и пользователям, не имеющим прав на редактирование новостей.
2.6.3
- Доработана фильтрация новостей по ID (теперь работа полностью аналогична фильтрации по категориям).
- Добавлена возможность задавать время жизни кеша (в секундах) каждого блока. (переменная &cache_live=60 установит время жизни кеша в 60 секунд)
v.2.6.2
- Добавлена фильтрация по ID новостей (нужно указать в строке подключения переменную &post_id=1,2,3 для вывода новостей с соответствующими id).
- Добавлен модификатор переменной &post_id, запрещающий вывод указанных в этой переменной ID новостей (Для активации достаточно указать после &post_id=1,2,3 эту переменную: &ignore_post_id=y)
- Вернул проверку расположения картинок (с других серверов картинки браться не будут)
- Добавлена переменная &showstat - для показа времени генерации блока для администратора сайта.
- Добавлена проверка корректности введённого имена шаблона (при некорректном имени шаблона будет выведена соответствующая надпись в блоке а не сообщение на белом фона страницы).
- Исправлено много ошибок, возникших из-за несовместимости DLE 9.6 и более ранних версий.
v.2.6 (RC)
- Добавлена фильтрация новостей по автору. (нужно указать в строке подключения переменную &author={usertitle} для вывода новостей автора на странице его профиля) спасибо nowheremany за идею реализации.
- Добавлена фильтрация по дополнительным полям, в фильтр попадают только новости, у которых заполнено указанное дополнительное поле (в строке подключения нужно указать переменную &xfilter=image, text - в этом случаи будут отобранны только те новости, в которых заполненны допполя image и text)
- Обновлён ввывод рейтинга.
- Добавлен тег {category-url}.
- Пока что закомментировал код проверки адресов картинок, на локалке работают картинки со сторонних сайтов, нужно проверять на хостинге.
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
v.1.1:
-
добавлена функция bad - при указании в строке подключений переменной
&bad=y
- категории, указанные в переменной&category
- будут исключены из вывода. - добавлена пара примеров строк вызова модуля.