Автоматические meta-теги title и description
Популярные запросы: тема Omnis, плагин Pagelist, Cotonti 0.9.25, ЧПУ, Font Face
- 654 просмотра
- 22 января, 2023
- Обновлено: 3 июня, 2025
- admin
- Время чтения: 2 минуты
- 1 (Подробно)
Итак, вы запускаете интернет-магазин и начинаете наполнять его товарами. Делать это можно разными способами, однако сразу же возникает вопрос создания уникальных мета-тегов title и meta description. Когда количество товаров начнет переваливать за сотню, вопрос начинает превращаться в серьезную проблему. Ни один СЕО-аудит не проходит без ошибок, а оптимизатор и контентщик начинают предлагать варианты один хуже другого.
В движке Cotonti можно легко автоматизировать данную задачу. Поясним ее на примере интернет-магазина. Опять же, ради примера, будем считать, что в структуре экстраполей у нас существует поле page_price, в котором хранится цена товара.
Прежде всего создадим плагин, или добавим новую часть к уже существующему. Мы будем использовать хук header.main:
<?php
/* ====================
[BEGIN_COT_EXT]
Hooks=header.main
[END_COT_EXT]
==================== */
defined('COT_CODE') or die('Wrong URL');
Для начала все же проверим экстраполе с ценой на ненулевое значение и подставим к нему значение валюты. В противном случае используем строковое значение "недорого":
$howmuch = ($pag['page_price'] > 0) ? 'за ' . $pag['page_price'] . ' BYN') : 'недорого';
Следующим шагом формируем meta title. Исходим из того, что название товара находится в стандартном поле page_title:
$out['fulltitle'] = 'Купить ' . $pag['page_title'] . ' в Минске ' . $howmuch;
Чтобы все было по-джедайски, определим языковые переменные:
$L['what'] = 'Купить'; $L['where'] = 'в Минске';
Результирующий код:
$out['fulltitle'] = $what . ' ' . $pag['page_title'] . ' ' . $where . ' ' . $howmuch;
Поскольку подобным образом надо поступать только с определенным набором страниц, ограничим наш генератор. Например, так:
if ($c == 'computers') $out['fulltitle'] = $what . ' ' . $pag['page_title'] . ' ' . $where . ' ' . $howmuch;
Meta description генерим аналогичным способом, но уже в компоненте плагина с хуком page.main:
<?php /* ==================== [BEGIN_COT_EXT] Hooks=page.main [END_COT_EXT] ==================== */
Генерим языковые переменные для тега meta description:
$L['weoffer'] = 'Предлагаем нашим клиентам купить'; $L['delivery'] = 'с доставкой и подключением под ключ';
Результирующий код:
$out['desc'] = $weoffer . ' ' . $pag['page_title'] . ' ' . $howmuch . ' ' . $where . ' ' . $delivery;
Выводы
Несложным плагином из двух частей мы смогли автоматизировать рутинную задачу по формированию мета-данных для типовых и малоконтентных страниц сайта. В нашем случае, товаров интернет-магазина. Чередуя текстовые вставки и значения экстраполей, мы получили уникальные мета-теги title и description для каждой товарной позиции.
Все, что от вас потребуется в дальнейшем, это отслеживать длину полученных значений так, чтобы она не превышала максимальные 65 и 155 символов для title и description соответственно.
Не за что) В следующий раз лучше зарегистрироваться и задавать вопросы на форуме.
Удачи с проектом!
Благодарю!
Отличный сайт и Админ!
Где копать я уже объяснил. Кроме этого надо убедиться в том, что установлен плагин Whosonline. И до последнего среза желательно обновиться. Если все сделано, в шаблоне users.details.tpl должны отрабатывать теги
{USERS_DETAILS_ONLINE}и{USERS_DETAILS_ONLINE_TITLE}Если в config.php включен режим Legacy (
$cfg['legacyMode']), то доступен будет только тег{USERS_DETAILS_ONLINETITLE}Скорее всего проблема именно в этом.Режим Legacy добавляется после обновления до Siena 0.9.24.2 со значением
trueи отвечает за обратную совместимость тем. Сильно советую ознакомиться с данной статьей, обновить тему и отключить его.Я уж глубоко извиняюсь что не в той ветки написал, можете потом удалить.
Но дело в том что не работает тег именно <div class="status status-<!-- IF {USERS_DETAILS_ONLINE} == '1' -->online<!-- ELSE -->offline<!-- ENDIF -->"> Что может быть такое?
Уж точно не в мета-тегах) Для начала надо убедиться в том, что иконка "онлайн" присутствует на сервере (доступна по прямой ссылке). Еще надо бы проверить доступность ресурсной строки $R['admin_icon_usergroup1'] в файле resources.php дефолтного или кастомного айкон-пэка.
Не работает иконка онлайн пользователя, офлайн работает, когда был. Где копать?
Meta Title всегда формируется через переменную
$out['fulltitle']с хуком header.main. В условии необходимо проверять$env['location'](pages или list) и (при необходимости)$cи др.За Meta Description отвечает
$out['desc'], и здесь хуки уже будут разные: page.main или ниже для страниц и page.list.main или ниже для разделов.Применил у себя, тоже работает. Но заметил, что изменения Title и Description происходит в локации Cot::$env['location'] == 'pages'
Подскажите, пожалуйста, как изменить Title и Description в локации list?
Новый комментарий
Ошибка
Выполнено