SEO Forum — SEO‑плагин для модуля форумов Cotonti
Автор: webitproff
Дата: 2026‑07‑04
Copyright: © webitproff, 2025‑2026
Репозиторий
Лицензия: BSD 3‑Clause License
1. Назначение плагина
SEO Forum — это комплексное SEO‑решение для модуля «Форумы» Cotonti.
Плагин автоматически формирует все необходимые мета‑теги (title, description, keywords), социальные карточки (Open Graph, Twitter Cards), структурированные данные Schema.org (DiscussionForumPosting), а также добавляет блок «Похожие темы», время чтения, информацию об авторе и гибко управляет каноническими URL.
Плагин работает на всех страницах форума:
- список постов темы;
- одиночный пост (с корректным canonical при активном
forums_singlepost); - список тем раздела;
- главная страница форума;
- страницы отдельных категорий (секций).
2. Основные возможности
- Умные мета‑описания
meta name="description"формируется по схеме:Название категории. Текст описания. Текст описания обрезается без разрыва слов — до ближайшей точки, запятой, восклицательного или вопросительного знака после 160‑го символа, а если знак не найден — до последнего пробела. - Open Graph и Twitter Cards
Автоматически выводятсяog:title,og:description,og:image,og:url,og:type,og:site_name,og:locale, а такжеtwitter:card,twitter:title,twitter:description,twitter:image. - Структурированные данные Schema.org
Генерируется JSON‑LD типаDiscussionForumPostingс полямиheadline,description(до 2000 символов из текста поста),keywords,author,publisher,datePublished,dateModified,image,mainEntityOfPage. - Управление каноническими URL
Для одиночного поста (при активном плагинеforums_singlepost) канонический URL указывает на страницу конкретного поста, а не на всю тему. Для остальных страниц каноникал строится корректно (тема, раздел, категория, главная форума). - Похожие темы
На странице темы выводится блок «Похожие темы» (до 3 тем, настраивается). Каждая тема показывает изображение (из вложенийattacherили плейсхолдер), заголовок, описание (с умной обрезкой) и автора. - Время чтения и автор темы
Рассчитывается время чтения первого поста (200 слов/мин, минимум 1 мин). Отображается автор темы (или автор конкретного поста для одиночной страницы). - Переопределение заголовков и мета‑тегов
На страницах списка тем, разделов и главной форума устанавливаются кастомныеtitle,description,keywordsв соответствии с настройками категорий или общими настройками плагина. - Локализация
Полная поддержка русского и английского языков. Предусмотрены дефолтные строки для пустых мета‑тегов.
3. Структура файлов
plugins/seoforums/
├── inc/
│ └── seoforums.functions.php — functions (keyword extraction, reading time, image retrieval)
├── lang/
│ ├── seoforums.ru.lang.php — Russian translation and stop words
│ └── seoforums.en.lang.php — English translation and stop words
├── seoforums.setup.php — plugin registration and configuration
├── seoforums.forums.posts.main.php — SEO tags for post list and single post (Open Graph, Twitter, Schema.org, canonical)
├── seoforums.forums.posts.tags.php — template tags (related topics, reading time, author)
├── seoforums.header.tags.php — override of meta tags in <head> for all forum pages
└── seoforums.global.php — (optional) additional global actions
4. Как это работает
Умная обрезка описаний
При формировании meta description и описаний в микроразметке применяется алгоритм:
- Берётся исходный текст (описание темы или текст поста).
- Если его длина больше 160 символов, ищется точка, запятая,
!или?в диапазоне от 160 до 250 символов. - Если знак найден — текст обрезается до него включительно (без разрыва слова).
- Если знак не найден — обрезаем до последнего пробела перед 160‑м символом, сохраняя целостность слова.
- В начало добавляется название категории с точкой:
Категория. Описание….
Интеграция с forums_singlepost
При активном плагине forums_singlepost на странице одиночного поста:
og:urlиcanonicalссылаются на сам пост, а не на тему.meta descriptionиJSON-LD descriptionформируются из текста конкретного поста.- Автор в микроразметке соответствует автору поста, а не первому сообщению темы.
- Изображение подбирается из вложений поста, а если их нет — из темы.
Похожие темы
Блок RELATED_TOPICS выводится в шаблоне форума. Для каждой похожей темы:
- Проверяется, есть ли описание (
ft_desc) — если нет, берётся текст первого поста. - Описание умно обрезается (по тому же алгоритму, что и
meta description) и дополняется названием категории. - Изображение получается из вложений
attacherпервого поста, либо используется плейсхолдер. - Автор определяется по
ft_firstposterid.
5. Требования
- Cotonti CMF версии 1.0 или новее (протестировано на 0.9.26+)
- PHP 8.4 или выше
- MySQL 8.0+ (или MariaDB с поддержкой InnoDB)
- Модуль forums должен быть установлен и активирован
- Рекомендуемые плагины:
attacher— для извлечения изображений из постовurleditor— для SEO‑дружественных URL
6. Установка
- Скопируйте папку
seoforumsв директориюplugins/вашего сайта. - Перейдите в Админ‑панель → Расширения и установите плагин SEO Forum.
- Настройте конфигурацию:
placeholderlogo— путь к маленькому логотипу для микроразметки (например,themes/index36/img/logo.webp)placeholderimagedefault— путь к большой картинке‑плейсхолдеру для тем без изображенияmaxrelatedpostsperpage— количество похожих тем (0 — отключить блок)
В шаблоне
header.tplубедитесь, что присутствуют теги{HEADER_META_DESCRIPTION},{HEADER_META_KEYWORDS}и{PHP.out.meta}. пример:<!-- /******************************************************************************** * File: header.tpl * Extension: Core' * Description: HTML template for header.tpl. * Compatibility: CMF/CMS Cotonti Siena v0.9.26[](https://github.com/Cotonti/Cotonti) * Dependencies: * Bootstrap 5.3.+[](https://getbootstrap.com/); * Font Awesome Free 7.1[](https://fontawesome.com/) * Theme: Index36 * Version: 1.0.2 * Created: 01 Feb 2026 * Updated: 04 July 2026 * Copyright (c) 2026 webitproff | https://github.com/webitproff * Source: https://github.com/webitproff/index36-cotonti-theme * Demo : https://freelance-script.abuyfile.com/ * Help and support: https://abuyfile.com/ru/forums/cotonti/original/skins/index36 * License: BSD (Free distribution with saving Copyright (c) 2026 webitproff) ********************************************************************************/ --> <!-- BEGIN: HEADER --> <!DOCTYPE html> <!-- IF {HTML_LANG} --> <html lang="{HTML_LANG}" data-bs-theme="light"> <!-- ELSE --> <html lang="{PHP.usr.lang}" data-bs-theme="light"> <!-- ENDIF --> <!-- main header --> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <!-- IF {I18N_HEADER_META_TITLE} --> <title>{I18N_HEADER_META_TITLE}</title> <!-- ELSE --> <title>{HEADER_TITLE} <!-- IF {MARKET_HEADER_XTRA_DEMO_COUNTRY} -->{MARKET_HEADER_XTRA_DEMO_COUNTRY_NAME} <!-- ENDIF --></title> <!-- ENDIF --> <!-- IF {I18N_HEADER_META_DESCRIPTION} --> <meta name="description" content="{I18N_HEADER_META_DESCRIPTION}" /> <!-- ELSE --> <!-- IF {HEADER_META_DESCRIPTION} --> <meta name="description" content="{HEADER_META_DESCRIPTION}" /> <!-- ENDIF --> <!-- ENDIF --> <!-- IF {HEADER_BASEHREF} --> {HEADER_BASEHREF} <!-- ENDIF --> <!-- IF {HEADER_CANONICAL_URL} --> <link rel="canonical" href="{HEADER_CANONICAL_URL}" /> <!-- ENDIF --> <!-- IF {ALTERNATE_TAGS} --> {ALTERNATE_TAGS} <!-- ENDIF --> <link rel="shortcut icon" href="favicon.ico" /> <link rel="icon" href="{PHP.cfg.themes_dir}/{PHP.theme}/img/icon.webp" type="image/svg+xml"> <link rel="apple-touch-icon" href="apple-touch-icon.png" /> <!-- IF {PHP.out.meta} --> {PHP.out.meta} <!-- ENDIF --> <script> (function () { const storedTheme = localStorage.getItem('theme'); const prefersDark = window.matchMedia('(prefers-color-scheme: dark)').matches; const defaultTheme = storedTheme || (prefersDark ? 'dark' : 'light'); document.documentElement.setAttribute('data-bs-theme', defaultTheme); })(); </script> {HEADER_HEAD} </head> <body>В шаблоне
forums.posts.tplдобавьте блокRELATED_TOPICS(пример есть в документации) и теги{TOPIC_READ_TIME},{TOPIC_AUTHOR}при необходимости. например, после формы для ответов, вставить:<!-- IF {PHP|cot_plugin_active('seoforums')} --> <!-- BEGIN: RELATED_TOPICS --> <div class="container mb-4 mt-5"> <h3 class="h4 mt-3">{PHP.L.seoforums_related}</h3> <div class="row g-3"> <!-- BEGIN: RELATED_ROW --> <div class="col-12 col-md-6 col-lg-4"> <a href="{RELATED_TOPIC_ROW_URL}" class="card border-0 shadow-sm text-decoration-none h-100 overflow-hidden"> <!-- Image cropped to 1200:630 aspect ratio --> <div class="related-img-wrapper" style="aspect-ratio: 1200 / 630; width: 100%; overflow: hidden;"> <img src="{RELATED_TOPIC_ROW_IMAGE}" alt="{RELATED_TOPIC_ROW_TITLE}" class="related-img" style="width: 100%; height: 100%; object-fit: cover; object-position: center;"> </div> <!-- Card content --> <div class="card-body"> <h5 class="fs-6 fw-semibold mb-1 text-body">{RELATED_TOPIC_ROW_TITLE}</h5> <!-- IF {RELATED_TOPIC_ROW_DESC} --> <p class="text-muted small mb-1">{RELATED_TOPIC_ROW_DESC}</p> <!-- ENDIF --> <p class="text-muted small mb-0">{RELATED_TOPIC_ROW_AUTHOR}</p> </div> </a> </div> <!-- END: RELATED_ROW --> </div> </div> <!-- END: RELATED_TOPICS --> <!-- ENDIF -->- Очистите системный кэш.
7. Рекомендации
- Для корректной вставки изображений из постов установите плагин
attacher. - Настройте стоп‑слова в языковом файле, чтобы улучшить качество извлечения ключевых слов.
- Если вы используете forums_singlepost для раздельных шаблонов одиночных постов, плагин автоматически подстроит канонические URL и мета‑теги.
- При большом количестве постов убедитесь, что таблицы
cot_forum_topics,cot_forum_postsиcot_structureимеют необходимые индексы.
8. Поддержка
9. Лицензия
BSD 3‑Clause License.
Автор: webitproff, Copyright © 2025‑2026.
Репозиторий: https://github.com/webitproff/cot-seoforums
Купить Плагин SEO + Микроразметка для Forum для Cotonti по низким ценам. Интернет-магазин предлагает заказать Плагин SEO + Микроразметка для Forum для Cotonti, просмотреть полное описание, детальные характеристики, фото товара и актуальные цены со скидками