Плагин SEO Forum для Cotonti
Плагин SEO Forum расширяет SEO-возможности модуля форумов в Cotonti CMF версии 0.9.26 на PHP 8.4. Он добавляет мета-теги, Open Graph, Twitter Card, структурированные данные Schema.org, извлечение ключевых слов, оценку времени чтения и вывод похожих тем на страницах форума.
Протестировано
Cotonti CMF v.0.9.26 на PHP v.8.4
Структура файлов
plugins/seoforums/
├── inc/
│ └── seoforums.functions.php # Функции для извлечения ключевых слов и оценки времени чтения
├── lang/
│ ├── seoforums.ru.lang.php # Русские переводы и стоп-слова для извлечения ключевых слов
│ └── seoforums.en.lang.php # Английские переводы и стоп-слова для извлечения ключевых слов
├── seoforums.forums.posts.php # Добавляет мета-теги Open Graph, Twitter Card и Schema.org
├── seoforums.forums.tags.php # Определяет теги страницы (TOPIC_READ_TIME, TOPIC_AUTHOR, RELATED_TOPIC_ROW_*)
├── seoforums.header.tags.php # Переопределяет HEADER_META_DESCRIPTION и HEADER_META_KEYWORDS
└── seoforums.setup.php # Конфигурация и установка плагина
Описание файлов
- seoforums.setup.php: Определяет метаданные плагина (название, версия, автор) и конфигурацию (пути к изображениям, количество похожих тем).
- seoforums.functions.php: Содержит функции:
cot_extract_keywords_forums($text, $limit = 10): Извлекает ключевые слова из текста, удаляя HTML, приводя к нижнему регистру, исключая стоп-слова и сортируя по частоте.cot_estimate_read_time_forums($text): Оценивает время чтения, удаляя HTML/BB-коды, считая слова (200 слов/минута, минимум 1 минута).
- seoforums.header.tags.php: Переопределяет
{HEADER_META_DESCRIPTION}и{HEADER_META_KEYWORDS}для мета-тегов на страницах тем форума. - seoforums.forums.posts.php: Генерирует мета-теги Open Graph, Twitter Card и Schema.org для страниц тем, включая заголовок, описание, ключевые слова, автора, категорию и изображения.
- seoforums.forums.tags.php: Определяет теги для шаблона
forums.posts.tpl, такие как{TOPIC_READ_TIME},{TOPIC_AUTHOR},{RELATED_TOPIC_ROW_URL},{RELATED_TOPIC_ROW_TITLE},{RELATED_TOPIC_ROW_DESC},{RELATED_TOPIC_ROW_IMAGE},{RELATED_TOPIC_ROW_AUTHOR}. - seoforums.ru.lang.php: Содержит русские переводы ("Похожие темы", "мин чтения", "Неизвестный автор") и стоп-слова для извлечения ключевых слов.
- seoforums.en.lang.php: Содержит английские переводы (например, "Related topics", "min read", "Unknown author") и стоп-слова для извлечения ключевых слов.
Возможности
- Мета-теги:
- Генерирует
<meta name="description">(категория + описание темы или текст первого поста, усечённое до 160 символов) и<meta name="keywords">(извлечённые ключевые слова). - Обеспечивает описание в одну строку без переносов.
- Генерирует
- Open Graph и Twitter Card:
- Добавляет теги
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:
- Включает структурированные данные для типа
DiscussionForumPosting(headline,description,keywords,author,publisher,image,datePublished,dateModified,mainEntityOfPage).
- Включает структурированные данные для типа
- Извлечение ключевых слов:
- Извлекает до 10 ключевых слов из текста первого поста с помощью
cot_extract_keywords_forums, исключая стоп-слова изseoforums.ru.lang.phpилиseoforums.en.lang.php.
- Извлекает до 10 ключевых слов из текста первого поста с помощью
- Оценка времени чтения:
- Рассчитывает время чтения первого поста с помощью
cot_estimate_read_time_forums(200 слов/минута, минимум 1 минута).
- Рассчитывает время чтения первого поста с помощью
- Похожие темы:
- Отображает до 3 (настраиваемо) похожих тем из той же категории или других категорий, с заголовком, описанием, изображением (
ft_imageили плейсхолдер) и автором.
- Отображает до 3 (настраиваемо) похожих тем из той же категории или других категорий, с заголовком, описанием, изображением (
- Автор темы:
- Показывает имя автора из
cot_usersпоft_firstposteridили "Неизвестный автор", если данные отсутствуют.
- Показывает имя автора из
Функциональность
- Микроразметка: Добавляет структурированные данные в формате JSON-LD для типа "DiscussionForumPosting", включая заголовок, описание, ключевые слова, автора, издателя, даты публикации и модификации, изображение и ссылку на страницу.
- Open Graph и Twitter Card: Генерирует мета-теги для социальных сетей, включая заголовок, описание, URL, изображение и тип контента.
- Похожие темы: Выводит блок с похожими темами (RELATED_TOPICS) на странице темы форума. Количество тем настраивается в конфигурации (по умолчанию 3). Темы берутся из той же категории, если возможно, иначе из других категорий. Для каждой похожей темы отображается URL, заголовок, описание (из ft_desc или первого поста), изображение (ft_image или плейсхолдер) и автор.
- Время чтения: Рассчитывает ориентировочное время чтения первого поста темы на основе количества слов (средняя скорость 200 слов в минуту, минимум 1 минута). Выводится в шаблоне как "X мин чтения".
- Ключевые слова: Извлекает ключевые слова из текста первого поста, исключая стоп-слова (список на русском), учитывая частоту и длину слов (>2 символов). Возвращает до 10 ключевых слов.
- Автор темы: Определяет автора по ft_firstposterid, если не найден — "Неизвестный автор".
- Переопределение мета-тегов: На страницах тем форума устанавливает meta description (категория + описание, усечённое до 160 символов) и meta keywords (извлечённые ключевые слова).
- Изображения: Использует плейсхолдеры для логотипа (маленькое изображение) и изображения темы (большое изображение), настраиваемые в конфигурации.
Установка
Требования
- Cotonti CMF v.0.9.26.
- Модуль
forumsвключён. - База данных MySQL/MariaDB.
- Рекомендуемые плагины:
attacher,urleditor.
Шаги
- Скачайте плагин:
Клонируйте или скачайте репозиторий с GitHub:
git clone https://github.com/webitproff/cot-seoforums.git
-
- Или скачайте ZIP и распакуйте в
/plugins/.
- Или скачайте ZIP и распакуйте в
- Скопируйте файлы:
Поместите папку
seoforumsв/plugins/вашей установки Cotonti:public_html/plugins/seoforums/
- Установите плагин:
- Перейдите в Администрирование → Расширения в админ-панели Cotonti.
- Найдите SEO Forum в списке и нажмите Установить.
- Плагин зарегистрируется с помощью
seoforums.setup.php.
- Настройте конфигурацию:
- Перейдите в Администрирование → Расширения → seoforums → Конфигурация.
- Укажите:
placeholderlogo: Путь к логотипу (например,/images/logo.png).placeholderimagedefault: Путь к изображению темы (например,/images/default.jpg).maxrelatedpostsperpage: Количество похожих тем (0, 1, 2, 3, 5, 7; по умолчанию 3).
- Обновите шаблоны:
Откройте
/themes/{ваша_тема}/header.tplи убедитесь, что он содержит:<meta name="description" content="{HEADER_META_DESCRIPTION}" /> <meta name="keywords" content="{HEADER_META_KEYWORDS}" />
Также добавьте, если отсутствует:
<!-- IF {PHP.out.meta} -->{PHP.out.meta}<!-- ENDIF -->Откройте /themes/{ваша_тема}/forums.posts.tpl и добавьте:
<!-- IF {PHP|cot_plugin_active('seoforums')} -->
<!-- BEGIN: RELATED_TOPICS -->
<div class="mb-4 mt-5">
<h3 class="h4 mt-3">{PHP.L.seoforums_related}</h3>
<div class="list-group list-group-striped list-group-flush">
<!-- BEGIN: RELATED_ROW -->
<div class="list-group-item list-group-item-action">
<a class="link-secondary link-offset-2 link-underline-opacity-25 link-underline-opacity-100-hover" href="{RELATED_TOPIC_ROW_URL}">
<div class="row g-3">
<div class="col-12 col-md-1 text-center">
<img src="{RELATED_TOPIC_ROW_IMAGE}" alt="{RELATED_TOPIC_ROW_TITLE}" class="rounded-circle" width="64" height="64">
</div>
<div class="col-12 col-md-11">
<h5 class="mb-0 fs-6 fw-semibold text-primary-emphasis">{RELATED_TOPIC_ROW_TITLE}</h5>
<!-- IF {RELATED_TOPIC_ROW_DESC} -->
<p class="mb-1 text-muted">{RELATED_TOPIC_ROW_DESC}</p>
<!-- ENDIF -->
<p class="mb-1 text-muted small">{RELATED_TOPIC_ROW_AUTHOR}</p>
</div>
</div>
</a>
</div>
<!-- END: RELATED_ROW -->
</div>
</div>
<!-- END: RELATED_TOPICS -->
<!-- ENDIF -->Также в forums.posts.tpl добавьте для отображения времени чтения и автора темы:
<!-- IF {PHP|cot_plugin_active('seoforums')} -->
{TOPIC_READ_TIME}
{TOPIC_AUTHOR}
<!-- ENDIF -->- Очистите кэш:
- Перейдите в Администрирование → Кэш → Очистить кэш.
- Протестируйте плагин:
- Перейдите на страницу темы форума, например: (
https://abuyfile.com/index.php?e=forums&m=posts&q=171&l=ru). - Проверьте:
<meta name="description">и<meta name="keywords">в<head>.- Мета-теги Open Graph и Schema.org через
{PHP.out.meta}. - Время чтения (
{TOPIC_READ_TIME}), автора ({TOPIC_AUTHOR}) и блок похожих тем (RELATED_TOPICS).
- Перейдите на страницу темы форума, например: (
Рекомендации
- Конфигурация изображений:
- Укажите валидные пути в
placeholderlogoиplaceholderimagedefaultдля корректного отображения в мета-тегах и блоке похожих тем.
- Укажите валидные пути в
- Стоп-слова:
Расширьте список стоп-слов в
seoforums.ru.lang.phpилиseoforums.en.lang.phpдля улучшения извлечения ключевых слов:$L['seoforums_stop_words'] = 'а,без,более,бы,был,была,были,было,быть,в,вам,вас,весь,во,вот,...';
- Оптимизация базы данных:
- Убедитесь, что индексы на
cot_forum_topics(ft_id,ft_cat,ft_firstposterid),cot_forum_posts(fp_topicid),cot_users(user_id) иcot_structure(structure_code,structure_area) созданы для ускорения запросов.
- Убедитесь, что индексы на
- Тестирование:
- Используйте инструменты разработчика браузера для проверки мета-тегов и JSON-LD.
- Создайте несколько тем в одной категории для проверки блока похожих тем.
Предупреждения
- Конфликты шаблонов:
- Убедитесь, что
{HEADER_META_DESCRIPTION},{HEADER_META_KEYWORDS}, и{PHP.out.meta}не дублируются вheader.tpl, чтобы избежать множественных мета-тегов.
- Убедитесь, что
- Изображения:
- Если поле
ft_imageв таблицеcot_forum_topicsотсутствует или пустое, плагин используетplaceholderlogoилиplaceholderimagedefault. Укажите валидные изображения в конфигурации.
- Если поле
- Производительность:
- Извлечение ключевых слов (
cot_extract_keywords_forums) может замедлить загрузку для длинных текстов. Рассмотрите кэширование результатов.
- Извлечение ключевых слов (
- Языковая поддержка:
- Плагин включает русский (
seoforums.ru.lang.php) и английский (seoforums.en.lang.php) языки. Для других языков добавьте соответствующие файлы.
- Плагин включает русский (
Лицензия
BSD License. Автор: webitproff, Copyright (c) 2025. Репозиторий: https://github.com/webitproff/cot-seoforums.
Поддержка
Версия
2.0.1 (Дата: 2025-10-19).