Плагин подключения шаблона одиночного поста форума

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

Плагин forums_singlepost — шаблон одиночного поста форума Cotonti

Автор: webitproff
Дата: 2026-07-03
Copyright: © webitproff, 2026
Репозиторий: https://github.com/webitproff/forums-singlepost-tpl-cotonti
Лицензия: BSD 3-Clause License

Version Cotonti Compatibility PHP MySQL Bootstrap License

Содержание

  1. Назначение плагина
  2. Структура файлов плагина
  3. Почему файлы называются именно так
  4. Зачем нужен блок [BEGIN_COT_EXT]
  5. Механизм работы плагина
  6. Как использовать плагин
  7. Что не будет работать, если скопировать всё из forums.posts.tpl
  8. Итог

1. Назначение плагина

Плагин позволяет для каждого раздела форума задать индивидуальный шаблон страницы одиночного поста (когда открывается конкретное сообщение по прямой ссылке, а не вся тема целиком).
Если специальный шаблон для категории не задан, автоматически используется общий упрощённый шаблон forums.posts.single.tpl.

Пример:
Обычная тема открывается с шаблоном forums.posts.tpl (список всех постов).
Когда пользователь кликает по номеру поста #1, он попадает на страницу одного поста. Плагин может показать эту страницу с другим дизайном, например, без лишних элементов, с формой быстрого ответа или с особым оформлением, зависящим от категории.

2. Структура файлов плагина

plugins/forums_singlepost/
├── forums_singlepost.setup.php           ← регистрация плагина
├── forums_singlepost.forums.posts.main.php ← исполняемый хук
└── tpl/
    ├── forums.posts.single.tpl           ← заготовка дефолтного шаблона (скопируйте в тему)
    └── forums.posts.single.cat_code.tpl  ← пример для конкретной категории (скопируйте в тему)

Важно: Файлы из папки tpl/ плагина не загружаются напрямую. Это лишь заготовки, которые вы должны скопировать в папку вашей темы.

3. Почему файлы называются именно так

forums_singlepost.setup.php

Имя состоит из кода плагина (forums_singlepost) и суффикса .setup.php.
Система Cotonti при установке/обновлении расширений ищет файлы с таким именем, чтобы получить метаданные и зарегистрировать плагин в базе данных.

forums_singlepost.forums.posts.main.php

Здесь используется правило: {Code}.{имя_хука}.php.
- Code = forums_singlepost (должен совпадать с кодом в setup.php и названием папки).
- Имя хука = forums.posts.main — точка в коде модуля forums (файл posts.php), сразу перед строкой загрузки шаблона.

Именно поэтому файл называется так. Если имя не совпадёт, плагин не выполнится.

4. Зачем нужен блок [BEGIN_COT_EXT]

В начале каждого PHP‑файла плагина находится специальный заголовок:

/* ====================
[BEGIN_COT_EXT]
Code=forums_singlepost
...
[END_COT_EXT]
==================== */

В setup.php

Он содержит метаданные:
- Code — уникальный код плагина.
- Name, Description, Version, Author и т.д. — информация для администратора.
- Auth_guests, Auth_members — права доступа к плагину (кто может включать/выключать).
- Lock_guests, Lock_members — защищённые права.
- Requires_modules — перечень обязательных модулей, без которых плагин не заработает (здесь forums).

Эта информация записывается в БД при установке и используется админ‑панелью.

В файлах хуков

Блок указывает системе, к какому хуку привязан данный файл:

Hooks=forums.posts.main
Order=10

- Hooks — имя хука.
- Order — приоритет выполнения (чем меньше число, тем раньше сработает). Значение 10 используется по умолчанию.

Без этого блока файл будет проигнорирован.

5. Механизм работы плагина

Как обычно выбирается шаблон для страницы с постами

В файле modules/forums/posts.php есть строка:

$mskin = cot_tplfile(array('forums', 'posts', Cot::$structure['forums'][$s]['tpl']));

Функция cot_tplfile() собирает имя файла так: forums.posts.{tpl}.tpl.
Если $tpl пустая строка (как обычно), загружается forums.posts.tpl.
Если $tpl = 'single', будет загружен forums.posts.single.tpl.

Что делает плагин

Хук forums.posts.main выполняется до загрузки шаблона. Плагин проверяет, является ли текущая страница одиночным постом (по наличию параметров id или p в URL), и если да — подменяет значение Cot::$structure['forums'][$s]['tpl'] на нужное.

global $id, $p, $s;
if ((!empty($id) || !empty($p)) && !empty($s) && isset(Cot::$structure['forums'][$s])) {
    $tplName = 'single.' . $s;   // например, 'single.e-moped-brands'
    $themePath = Cot::$cfg['themes_dir'] . '/' . Cot::$cfg['defaulttheme'];
    $catTplFile = $themePath . '/modules/forums/forums.posts.' . $tplName . '.tpl';
    if (file_exists($catTplFile)) {
        Cot::$structure['forums'][$s]['tpl'] = $tplName;
    } else {
        Cot::$structure['forums'][$s]['tpl'] = 'single';
    }
}

После этого cot_tplfile() срабатывает уже с новым значением tpl и загружает соответствующий файл из папки текущей темы.

Почему шаблоны должны лежать в теме, а не в папке плагина

Функция cot_tplfile() для модуля forums ищет шаблоны только в папках темы и в стандартной директории модуля (modules/forums/tpl/). Папка plugins/forums_singlepost/tpl/ не входит в пути поиска для модуля forums. Поэтому готовые шаблоны необходимо скопировать в:

themes/ваша_тема/modules/forums/

Именно там движок сможет их найти.

Почему в имени файла должен быть код категории

Плагин формирует tplName = 'single.КОД_КАТЕГОРИИ'.
Для категории с кодом e-moped-brands будет запрошен файл forums.posts.single.e-moped-brands.tpl.
Если такого файла нет, откат идёт к forums.posts.single.tpl.

Таким образом вы можете для каждого раздела форума создать свой уникальный дизайн страницы одиночного поста. Без кода категории в имени файла разделить шаблоны было бы невозможно.

6. Как использовать плагин

Шаг 1. Установка

  1. Скопируйте папку forums_singlepost в plugins/ вашего сайта.
  2. Зайдите в админку → Расширения, найдите forums_singlepost и нажмите Установить.
  3. Убедитесь, что плагин включён (зелёный индикатор).

Шаг 2. Подготовка шаблонов

Скопируйте дефолтный single-шаблон из plugins/forums_singlepost/tpl/forums.posts.single.tpl в папку вашей темы:

themes/ваша_тема/modules/forums/forums.posts.single.tpl

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

Шаг 3. Создание категорийного шаблона (по желанию)

Если вы хотите для конкретной категории (например, e-moped-brands) использовать особый шаблон:

  1. Создайте в той же папке файл:

    themes/ваша_тема/modules/forums/forums.posts.single.e-moped-brands.tpl
  2. Наполните его нужной вёрсткой.

Теперь при открытии одиночного поста из этой категории будет загружен именно он. Если файла нет, будет использован forums.posts.single.tpl.

Примеры сценариев

  • Чистая страница для чтения: только текст поста, без аватаров, кнопок управления, пагинации. Подходит для публикаций, где важнее контент.
  • Страница с формой быстрого ответа: как во втором примере (e-moped-brands) — одиночный пост сразу с полем для ответа. Удобно для разделов техподдержки или обсуждений товаров.
  • Лендинг поста: можно добавить баннеры, кнопки призыва к действию, видеоплеер – всё, что нужно для конкретного раздела.

7. Что не будет работать, если скопировать всё из forums.posts.tpl

Вы можете полностью скопировать содержимое штатного forums.posts.tpl в forums.posts.single.xxx.tpl, но при этом:

  • Пагинация не отобразится (поскольку на странице только один пост, блок {PAGINATION} будет пуст).
  • Кнопка «Удалить» для конкретного поста не появится — в коде posts.php стоит условие, что удалять первый (и единственный) пост темы нельзя. Вместо этого админ должен использовать кнопки управления темой.
  • Ссылка на якорь поста ({FORUMS_POSTS_ROW_IDURL}) будет вести на ту же самую страницу, что может вызвать лишнюю перезагрузку.

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

8. Итог

Плагин forums_singlepost — это лёгкий и гибкий способ изменить отображение страницы одного поста форума без правки ядра.
Вся работа сводится к размещению шаблонов в папке темы. Плагин не требует настройки, не создаёт таблиц в БД и не влияет на другие страницы.

Репозиторий плагина на GitHub



Rating based on reviews:
Stars received: 0
Total reviews: 0
Average rating: 0
5 minutes read

Reviews to products

No reviews yet


Add to Cart

Product has no downloadable file

 

Category Extentions
Menus, design, and appearance, Posts and events
Availability
Free

Page Discussion in Telegram

Content author

webitproff

Offline

webitproff

Last logged: 2026-07-11 19:44

  • Чем могу помочь?

    Оказываю весь спектр услуг по CMF Cotonti. Разработка открытых и закрытых корпоративных интернет порталов, небольших социальных сетей, торговые площадки, маркетплейсы, биржи фриланса, каталоги товаров оптовых поставщиков, интернет-магазин под заказ, чтобы делать совместные покупки и групповые совместные продажи от имени нескольких продавцов.

  • Разработки на GitHub бесплатно
    • 2026-07-03 22:41
    • 2026-07-03 23:00

    Market PRO Showcase

    CMS, Script and Engine for an online storefront, infoproduct shop and digital goods store. Different prices in different currencies. Online cryptocurrency payments for goods and services.