Get Last Forum Posts — плагин для Cotonti
Выводит последние сообщения форума в любом месте сайта одним вызовом функции в шаблоне. Гибкая настройка, фильтрация по категориям и свой шаблон для каждого блока.
Оглавление
Возможности
- Вывод любого количества последних сообщений форума (по умолчанию 5)
- Фильтрация по одной, нескольким или всем категориям форума
- Настраиваемый учёт прав доступа к категориям (можно отключить)
- Гибкая система шаблонов: можно создать свой tpl-файл и указать его при вызове
- Автоматическое скрытие перемещённых и приватных тем
- Обрезка длинных сообщений до заданной длины с добавлением троеточия
- Корректная обработка BBCode в зависимости от настроек категории
Требования
- Cotonti (актуальная версия)
- Модуль «Форумы» (
forums) должен быть установлен и активирован
Установка
- Скачайте архив плагина и распакуйте его в папку
plugins/getlastposts/ вашего сайта. - Зайдите в админ-панель Cotonti → «Расширения».
- Найдите в списке «Get Last Forum Posts» и нажмите «Установить».
- Готово! Плагин сразу можно использовать в шаблонах.
Если вы вручную обновляли файлы плагина, после замены выполните «Переустановить», чтобы обновить запись в базе данных.
Быстрый старт
Самый простой вызов в любом шаблоне:
{PHP|cot_forums_getLastPosts(5)}
Эта строка выведет 5 последних сообщений форума из всех категорий, доступных текущему пользователю, используя стандартный шаблон getlastposts.sidebar.tpl.
Параметры функции
Функция cot_forums_getLastPosts() принимает три аргумента:
cot_forums_getLastPosts(
int $count = 5, // Количество сообщений
mixed $category = null, // Категории: null / false / '' = все доступные
string $template = 'getlastposts.sidebar' // Имя файла шаблона без расширения .tpl
)
$count – целое число, определяет, сколько последних сообщений будет загружено.$category – может быть:null, false или '' – вывести сообщения из всех категорий, доступных пользователю (с учётом прав, если проверка включена);- строкой, например
'news' – только из категории с кодом news; - массивом строк, например
['news', 'articles'] – из нескольких категорий одновременно.
$template – имя файла шаблона из папки plugins/getlastposts/tpl/. По умолчанию 'getlastposts.sidebar' соответствует файлу getlastposts.sidebar.tpl.
Примеры использования
Рассмотрим несколько реальных сценариев.
Блок на главной: все категории, стандартный шаблон
Разместите в шаблоне главной страницы (home.tpl или index.tpl) код:
<h3>Обсуждения на форуме</h3>
{PHP|cot_forums_getLastPosts(7)}
Будет показано 7 последних сообщений из всех публичных категорий форума. Оформление идёт через стандартный шаблон getlastposts.sidebar.tpl.
Врезка в статье: только одна категория
Предположим, на сайте есть страница, посвящённая новостям компании, и вы хотите показать свежие обсуждения из форумной категории company-news. В шаблоне страницы (page.tpl) внутри нужного места вставьте:
<!-- IF {PHP|cot_plugin_active('getlastposts')} -->
<div class="card mt-4">
<div class="card-header">Последние обсуждения</div>
<div class="card-body">
{PHP|cot_forums_getLastPosts(10, 'company-news')}
</div>
</div>
<!-- ENDIF -->
Если категория company-news закрыта для гостей, включённая настройка «Учитывать права» скроет эти сообщения от неавторизованных пользователей.
Сайдбар с компактным дизайном
Иногда стандартный вид не подходит для узкой боковой колонки. Создайте новый шаблон getlastposts.compact.tpl (см. Как создать собственный шаблон) и вызывайте плагин так:
{PHP|cot_forums_getLastPosts(5, null, 'getlastposts.compact')}
Теперь блок будет использовать компактную вёрстку без лишних отступов.
Разные шаблоны для разных разделов
Можно комбинировать фильтрацию и шаблоны. Например, на странице с вакансиями показываем обсуждения из категории jobs с одним дизайном, а в блоге — из blog с другим:
В шаблоне вакансий:
{PHP|cot_forums_getLastPosts(6, 'jobs', 'getlastposts.jobs')}
В шаблоне блога:
{PHP|cot_forums_getLastPosts(8, 'blog', 'getlastposts.blog')}
Файлы шаблонов getlastposts.jobs.tpl и getlastposts.blog.tpl должны быть заранее созданы в папке плагина.
Проверка активности плагина
Рекомендуется всегда оборачивать вызов плагина в проверку его активности, чтобы избежать ошибок, если плагин будет отключён:
<!-- IF {PHP|cot_plugin_active('getlastposts')} -->
{PHP|cot_forums_getLastPosts(10, false, 'getlastposts.sidebar')}
<!-- ENDIF -->
Настройки плагина
Настройки находятся в админ-панели:
Администрирование → Расширения → Get Last Forum Posts → Настройки
Учитывать права доступа к категориям
- Включено (1) – плагин проверяет, может ли текущий пользователь читать категорию. Если нет, сообщения из неё не выводятся. Это значение по умолчанию.
- Выключено (0) – права не проверяются, выводятся все сообщения, кроме скрытых техническими средствами (приватные темы, перемещённые топики).
Как создать собственный шаблон
- Перейдите в папку
plugins/getlastposts/tpl/. - Скопируйте файл
getlastposts.sidebar.tpl и переименуйте, например, в getlastposts.custom.tpl. - Отредактируйте его под свой дизайн. Основная структура шаблона:
<!-- BEGIN: MAIN -->
<h6>{PHP.L.getlastposts_title}</h6>
<ul class="list-unstyled">
<!-- BEGIN: POST_ROW -->
<li class="bg-transparent">
<a href="{POST_ROW_TOPIC_URL}">{POST_ROW_TITLE}</a>
<br><small>{POST_ROW_POSTER}, {POST_ROW_DATE}</small>
<p class="text-muted">{POST_ROW_TEXT}</p>
</li>
<!-- END: POST_ROW -->
<!-- BEGIN: NO_POSTS -->
<li>{PHP.L.getlastposts_none}</li>
<!-- END: NO_POSTS -->
</ul>
<!-- END: MAIN -->
- Используйте новый шаблон, указав его имя без
.tpl в третьем параметре функции:
{PHP|cot_forums_getLastPosts(5, null, 'getlastposts.custom')}
Доступные переменные в POST_ROW
{POST_ROW_ID} – идентификатор сообщения{POST_ROW_TOPIC_ID} – идентификатор темы{POST_ROW_URL} – прямая ссылка на сообщение{POST_ROW_TOPIC_URL} – ссылка на тему{POST_ROW_TITLE} – заголовок темы (экранирован){POST_ROW_CAT_PATH} – хлебные крошки категории{POST_ROW_POSTER} – имя автора (с ссылкой на профиль, если возможно){POST_ROW_DATE} – отформатированная дата{POST_ROW_DATE_STAMP} – Unix-метка времени{POST_ROW_TEXT} – обрезанное превью текста без HTML-тегов{POST_ROW_ODDEVEN} – CSS-класс чётности (even/odd){POST_ROW_NUM} – порядковый номер, начиная с 1{POST_ROW} – полный массив данных сообщения (для продвинутых модификаций)
Структура файлов
plugins/getlastposts/
├── getlastposts.setup.php # Установочный файл (регистрация в БД)
├── getlastposts.global.php # Хук global, подключает зависимости
├── inc/
│ └── getlastposts.functions.php # Основная функция cot_forums_getLastPosts()
├── tpl/
│ └── getlastposts.sidebar.tpl # Шаблон вывода по умолчанию
└── lang/
└── getlastposts.ru.lang # Языковые строки (русский)
Часто задаваемые вопросы
Плагин установлен, но ничего не выводится
- Бывает, что в админке плагина, после использования кнопки "Обновить" прекращается вывод списка последних постов в нужном месте.
- Проверьте, есть ли в форуме сообщения, подходящие под указанные категории и доступные пользователю.
- Самое простое - это тупо просто переустановите плагин в админке, или уделите обертку (
<!-- IF {PHP|cot_plugin_active('getlastposts')} --> и <!-- ENDIF -->) проверки в шаблоне и просто пропишите: {PHP|cot_forums_getLastPosts(10, false, 'getlastposts.sidebar')} - если ничего не помогло, - лучше писать на форуме
Как вывести сообщения из нескольких категорий?
Передайте массив кодов категорий во втором параметре:
{PHP|cot_forums_getLastPosts(10, 'plugs,lifehack,original', 'getlastposts.sidebar')}
Не отображаются сообщения из нужной категории
- Включена ли настройка «Учитывать права доступа»? Возможно, текущий пользователь не имеет доступа на чтение этой категории.
- Проверьте точное написание кода категории (он чувствителен к регистру и должен совпадать с кодом в структуре форума).
- Сообщения из приватных и скрытых разделов исключаются автоматически.
Могу ли я использовать несколько блоков с разными настройками на одной странице?
Да, вы можете вызывать функцию сколько угодно раз с разными параметрами и шаблонами.
Лицензия
BSD License. Свободное распространение и модификация при условии сохранения копирайта.
Автор и поддержка
Если вы нашли ошибку или у вас есть предложения, создайте issue в репозитории.