Плагин SeoArticle для Cotonti
Расширяет SEO-возможности модуля Pages в Cotonti CMF, добавляя мета-теги, Open Graph, Twitter Card, структурированные данные Schema.org, извлечение ключевых слов, оценку времени чтения и функционал связанных статей.
Плагин "SeoArticle" расширяет SEO-возможности модуля Pages в Cotonti CMF, добавляя мета-теги, Open Graph, Twitter Card, структурированные данные Schema.org, извлечение ключевых слов, оценку времени чтения и функционал связанных статей.
Протестировано Cotonti CMF v.0.9.26 beta на PHP v.8.2.25
Скачать плагин seo-оптимизации для Cotonti CMS/CMF
Структура файлов плагина и описание
plugins/seoarticle/
├── inc/
│ └── seoarticle.functions.php # Функции для извлечения ключевых слов и оценки времени чтения
├── lang/
│ └── seoarticle.ru.lang.php # Русские переводы и стоп-слова для извлечения ключевых слов
│ └── seoarticle.en.lang.php # Английские переводы и стоп-слова для извлечения ключевых слов
├── seoarticle.header.tags.php # Переопределяет HEADER_META_DESCRIPTION и HEADER_META_KEYWORDS
├── seoarticle.page.main.php # Добавляет мета-теги Open Graph, Twitter Card и Schema.org
├── seoarticle.page.tags.php # Определяет теги страницы (например, PAGE_READ_TIME, PAGE_AUTHOR, RELATED_ROW_*)
└── seoarticle.setup.php # Конфигурация и установка плагина
Описание файлов
- seoarticle.setup.php: Определяет метаданные плагина (название, версия, автор) и зависимости.
- seoarticle.header.tags.php: Переопределяет `{HEADER_META_DESCRIPTION}` и `{HEADER_META_KEYWORDS}` для мета-тегов, обеспечивая описание в одну строку и извлечение ключевых слов.
- seoarticle.page.main.php: Генерирует мета-теги Open Graph, Twitter Card и Schema.org, включая заголовок, описание, ключевые слова, автора и изображение.
- seoarticle.functions.php: Содержит `cot_extract_keywords` (извлекает ключевые слова с фильтрацией стоп-слов) и `cot_estimate_read_time` (оценивает время чтения, обрабатывает HTML/BBCode).
- seoarticle.ru.lang.php: Предоставляет русские переводы для меток (например, «Связанные статьи») и стоп-слова для извлечения ключевых слов.
- seoarticle.en.lang.php: Предоставляет английские переводы для меток (например, «Related articles») и стоп-слова для извлечения ключевых слов.
- seoarticle.page.tags.php: Добавляет теги, такие как `{PAGE_READ_TIME}`, `{PAGE_AUTHOR}` и `{RELATED_ROW_*}` для связанных статей (см. seoarticle.page.tags.php).
Возможности плагина и функционал
- Мета-теги :
- Генерирует `<meta name="description">` и `<meta name="keywords">` на основе `page_metadesc`, `page_keywords` или извлечённых из `page_text`.
- Обеспечивает описание в одну строку без переносов.
- Open Graph и Twitter Card:
- Добавляет `og:title`, `og:description`, `og:image`, `twitter:card` и др. для шаринга в соцсетях.
- Schema.org:
- Включает структурированные данные для статей (`headline`, `description`, `keywords`, `author`, `image`).
- Извлечение ключевых слов:
- Автоматически извлекает ключевые слова из `page_text` с помощью `cot_extract_keywords`, если `page_keywords` пусто.
- Поддерживает стоп-слова (например, «и, в, на»), определённые в `seoarticle.ru.lang.php` или `seoarticle.en.lang.php`.
- Оценка времени чтения:
- Рассчитывает время чтения с помощью `cot_estimate_read_time` (200 слов/минута, минимум 1 минута).
- Обрабатывает HTML и BBCode в `page_text`.
- Связанные статьи:
- Отображает связанные статьи с заголовком, описанием и изображением (`page_link_main_image`).
- Информация об авторе:
- Показывает имя автора из `cot_users` или «Неизвестный автор», если автор не найден.
## Установка плагина
### Требования
- Cotonti CMF (протестировано на Siena).
- Модуль Pages включён.
- База данных MySQL/MariaDB.
### Шаги
1. **Скачайте плагин**:
- Клонируйте или скачайте репозиторий с GitHub:
git clone https://github.com/webitproff/seoarticle.git
- Или скачайте ZIP https://github.com/webitproff/seoarticle и распакуйте в `/plugins/seoarticle/`.
2. **Скопируйте файлы**:
- Поместите папку `seoarticle` в `/plugins/` вашей установки Cotonti:
public_html/plugins/seoarticle/
3. **Установите плагин**:
- Перейдите в **Администрирование → Расширения** в админ-панели Cotonti.
- Найдите **SeoArticle** в списке и нажмите **Установить**.
- Плагин зарегистрируется с помощью `seoarticle.setup.php`.
4. **Настройте дополнительные поля**:
- Перейдите в **Администрирование → Структура → Страницы → Дополнительные поля**.
- Добавьте дополнительное поле для изображений:
- **Код**: `link_main_image`
- **Тип**: URL
- **Описание**: Главное изображение для Open Graph и связанных статей
- Убедитесь, что поля `page_metadesc`, `page_metatitle` и `page_keywords` доступны (по умолчанию в Cotonti).
5. **Обновите шаблоны**:
- Откройте `/themes/cleancot/header.tpl` и убедитесь, что он содержит:
<meta name="description" content="{HEADER_META_DESCRIPTION}" />
<meta name="keywords" content="{HEADER_META_KEYWORDS}" />
также добавьте код, если его нет в шаблоне header.tpl:
<!-- IF {PHP.out.meta} -->{PHP.out.meta}<!-- ENDIF -->
- Откройте `/themes/cleancot/page.tpl` ([скачатть тему](https://github.com/webitproff/cot-CleanCot)) и добавьте:
<!-- IF {PHP|cot_plugin_active('seoarticle')} -->
<!-- IF {RELATED_PAGES} -->
<div class="related">
<!-- BEGIN: MAIN.RELATED_PAGES.RELATED_ROW -->
<a href="{RELATED_ROW_URL}">
<div class="position-relative overflow-hidden rounded-5 shadow-bottom" style="aspect-ratio: 2 / 1;">
<!-- Условие Cotonti: проверка наличия главного изображения через экстраполяцию -->
<!-- IF {RELATED_ROW_LINK_MAIN_IMAGE} -->
<!-- Главное изображение страницы из Cotonti, адаптивное с обрезкой -->
<img src="{RELATED_ROW_LINK_MAIN_IMAGE}" alt="{RELATED_ROW_TITLE}" class="img-fluid object-fit-cover">
<!-- Альтернатива: если главного изображения нет -->
<!-- ELSE -->
<!-- Дефолтное изображение из темы Cotonti -->
<img src="{PHP.cfg.themes_dir}/{PHP.cfg.defaulttheme}/img/cotonti-cleancot.webp" alt="{PAGE_TITLE}" class="img-fluid object-fit-cover">
<!-- Конец условия изображения -->
<!-- ENDIF -->
</div>
<h3 class="h5 mb-0">{RELATED_ROW_TITLE}</h3>
<p>{RELATED_ROW_DESC}</p>
</a>
<!-- END: MAIN.RELATED_PAGES.RELATED_ROW -->
</div>
<!-- ENDIF -->
<!-- ENDIF -->
и в тело статьи:
<!-- IF {PHP|cot_plugin_active('seoarticle')} -->
{PAGE_READ_TIME}
<!-- ENDIF -->
6. **Очистите кэш**:
- Перейдите в **Администрирование → Кэш → Очистить кэш**.
7. **Протестируйте плагин**:
- Создайте или отредактируйте страницу в **Администрирование → Страницы**.
- Заполните `page_metadesc`, `page_keywords`, `page_metatitle` и `page_link_main_image` (опционально).
- Просмотрите страницу и проверьте:
- `<meta name="description">` и `<meta name="keywords">` в `<head>`.
- Теги Open Graph и Schema.org.
- Время чтения (`{PAGE_READ_TIME}`), автора (`{PAGE_AUTHOR}`) и связанные статьи.
## Рекомендации
- **Используйте мета-поля**:
- Всегда заполняйте `page_metadesc`, `page_keywords` и `page_metatitle` в редакторе страниц для точного SEO-контроля.
- Используйте `page_link_main_image` для улучшения превью в соцсетях.
- **Стоп-слова**:
- Расширьте стоп-слова в `/plugins/seoarticle/lang/seoarticle.ru.lang.php` для улучшения извлечения ключевых слов:
$L['seoarticle_stop_words'] = 'и,в,на,с,по,для,это,как,что,а,у,к,от,до,при,о,без,если';
- **Оптимизация базы данных**:
- Убедитесь, что индексы на `cot_pages` (`page_id`, `page_ownerid`, `page_cat`) и `cot_users` (`user_id`) созданы для ускорения запросов.
- **Тестирование**:
- Используйте инструменты разработчика браузера для проверки мета-тегов и структурированных данных.
- Протестируйте связанные статьи, создав несколько страниц в одной категории.
## Предупреждения
- **Конфликты шаблонов**:
- Убедитесь, что `{HEADER_META_DESCRIPTION}` и `{HEADER_META_KEYWORDS}` не дублируются в `header.tpl`, чтобы избежать множественных мета-тегов.
- Проверьте `<head>` на наличие дублирующихся `<meta name="description">` или `<meta name="keywords">`.
- **Дополнительные поля**:
- Если `page_link_main_image` не настроено, плагин использует `/images/default.jpg`. Укажите действительное изображение по умолчанию в `seoarticle.page.main.php`, если нужно.
- **Производительность**:
- Извлечение ключевых слов (`cot_extract_keywords`) может быть медленным для длинных `page_text`. Ограничьте длину текста или кэшируйте результаты при необходимости.
- **Поддержка языков**:
- Плагин включает переводы на русский (`seoarticle.ru.lang.php`) и английский (`seoarticle.en.lang.php`). Добавьте другие языки для мультиязычных сайтов.
- **Зависимости**:
- Требуется модуль Pages. Убедитесь, что он включён перед установкой.
- Запросы к базе данных предполагают наличие таблиц `cot_users` и `cot_structure`.
## Лицензия
BSD License. См. LICENSE для деталей.
## Автор
webitproff, 22 апреля 2025
## See also:
1. Userarticle for CMF Cotonti
The plugin for CMF Cotonti displays a list of users with the number of their articles and a detailed list of articles for each user.
2. Export to Excel via PhpSpreadsheet for CMF Cotonti
Exporting Articles to Excel from the Database in Cotonti via PhpSpreadsheet.Composer is not required for installation.
3. Export to Excel via PhpSpreadsheet for CMF Cotonti
Exporting Articles to Excel from the Database in Cotonti via PhpSpreadsheet.Composer is not required for installation.
4. The CleanCot theme for CMF Cotonti
Modern Bootstrap theme on v.5.3.3 for Cotonti Siena v.0.9.26 without outdated (legacy) mode. Only relevant tags!
Comments (0)
Content author
Offline
Sodium Carbonate
Last logged: 2026-09-01 22:41
- Page published: 2025-04-22 01:48
- Last update: 2025-04-22 01:57