Добро пожаловать на сайт SEDBY

Автоматические meta-теги title и description

Популярные запросы: тема Omnis, плагин Pagelist, Cotonti 0.9.25, ЧПУ, Font Face

  • 657 просмотров
  • 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?

Новый комментарий

Ваш комментарий будет доступен для редактирования 10 минут
Блок пользователя
Регистрация на нашем сайте позволит вам общаться на форумах и получить доступ к другому полезному функционалу
Вы вошли как Гость