Документация InstantCMS

для администраторов и разработчиков

Инструменты пользователя

Инструменты сайта


manual:settings:seo-patterns

SEO паттерны

Начиная с версии 2.8.0 InstantCMS поддерживает гибкие шаблоны генерации SEO параметров. Это означает, что CMS, согласно заданных шаблонов, сформирует самостоятельно в автоматическом режиме теги:

  • title
  • meta description
  • meta keywords
  • h1

На текущий момент поддерживается генерация шаблонов для:

  • страниц профилей пользователей
  • страниц групп
  • записей типов контента (кроме тега h1)
  • разделов типов контента, включая наборы и фильтры
  • главных страниц большинства компонентов: в их общих настройках ищите вкладку «SEO для главной страницы»

Для записей типов контента поддерживается также шаблон генерации URL.

Шаблон — SEO паттерн — это обычный текстовый блок с возможностью вставлять в фигурных скобках поля и выражения. Например, шаблон тега h1 для профиля может быть в самом простом случае таким:

Привет, это {nickname}

{nickname} - это название поля (или ячейки в базе данных) в котором хранится значение. В данном случае этот шаблон выведет на странице:

Привет, это Вася.

Полей в фигурных скобках можно использовать сколько угодно, таким образом строя фразы и предложения.

Выше был приведён самый простой шаблон, но CMS поддерживает и сложные шаблоны с подвыражениями, например:

{nickname}, {birth_date|string_date_age:0=y}, город {city_cache}

Выведет

Петя, 35 лет, Москва

Рассмотрим данный пример.

{nickname} — тут всё просто, это просто чистое значение поля nickname.

{birth_date|string_date_age:0=y} — выражение можно условно разбить на две части: название поля и через прямую черту название функции, через которую нужно «прогнать» значение поля. После названия функции через двоеточие могут идти (но не обязательно) дополнительные параметры, которые нужно передать в функцию вторым, третьим и т.п. аргументами. При этом первым аргументом в функцию всегда передаётся само значение поля. Если параметр функции должен быть массив, то сформируйте его по принципу формата строки запроса URL, например:

first=value&arr[]=foo+bar&arr[]=baz

в таком случае в параметр передастся массив

array('first' => 'value', 'arr' => array('foo bar', 'baz'))

Как раз в случае примера выше {birth_date|string_date_age:0=y} в функцию string_date_age передаётся первым параметром значение поля birth_date, а вторым параметром массив array('y').

Список строковых функций вы найдёте в файле /system/libs/strings.helper.php или /system/libs/html.helper.php, но и в том числе вы можете пользоваться любыми строковыми функциями PHP. Пример с еще одной полезной функцией:

{title}, {comments|html_spellcount:комментарий:комментария:комментариев}, рейтинг {rating|html_spellcount:пункт:пункта:пунктов}

Выведет

Бизнес ожидает снижения налогов, 21 комментарий, рейтинг 34 пункта

Также обратите внимание, что в примере выше используется выражение {city_cache}. Поля с таким названием нет в списке полей в админке, однако есть поле {city}. Некоторые поля имеют в базе данных дополнительную ячейку с кэшированным значением для упрощения выборки. Соответственно в данном случае в поле {city} будет число с id города, а в поле {city_cache} название города, которое нам и нужно.

Теперь рассмотрим выражение, когда нам нужно сформировать текст с нестандартным порядком слов, например, в шаблоне компонента Группы мы можем использовать такое выражение для тега h1:

{title} {sub_title: / %s}

Ячейка sub_title в данном случае вспомогательная и несёт в себе название вкладки. При этом на главной странице группы ячейка sub_title пустая и мы хотим, чтобы пустое значение отсутствовало, а когда бы мы находились в любой из вкладок название группы дополнялось названием вкладки через косую черту. Например, логично было предположить, что такую задачу можно было решить выражением:

{title} / {sub_title}

Но тогда, если sub_title пустая, на странице будет выведено:

Робототехника /

Поэтому в таких случаях, лучше использовать первое выражение. Принцип его построения прост:

Название_ячейки: любой текст, а там, где мы хотим вставить значение ячейки поставить символы ''%s'', т.е.
{sub_title: / %s}

Технически, всё, что будет стоять после двоеточия в конце имени поля воспринимается как формат для функции sprintf. При этом аргумент передаётся один - значение поля.

Еще один пример использования подобных конструкций:

{nickname:профиль пользователя %s самый лучший}

Выведет:

профиль пользователя Василий самый лучший

При этом, если поле nickname пустое, то не будет выведено ничего.

Поддерживаются также списки рандомных значений (InstantCMS > 2.10.1), например:

{title}{ и это отлично| что не может не радовать|. Отличная новость.}

Может вывести

Бизнес ожидает снижения налогов что не может не радовать.

А в следующий раз может вывести

Бизнес ожидает снижения налогов. Отличная новость.

Начиная с InstantCMS 2.17.0, в паттернах доступно специальное выражение {page}, которое выведет «страница № 2». Оно добавлено для больше гибкости взамен удалённой опции сайта «Добавлять номера страниц в тег title при пагинации».Используйте так (чтобы на первых страницах не было ничего выведено):

{page:, %s}

Специальные символы, которые не нужно использовать в текстах выражений:

  • | символ черты;
  • ? знак вопроса;
  • = знак равно;
  • : двоеточие.

Это специальные символы логических конструкций. Если вы хотите использовать эти символы в тексте, то их необходимо предварять обратным слэшем. Например \? или \:.

В версиях InstantCMS выше 2.17.1, в паттернах доступны простые условия. Например:

{has_desc?Есть описание|Без описания}
{delivery_type=2?Доставка Яндексом|Доставка почтой}
{is_admin?Администратор}

Таким образом, если в выражении есть символ вопроса, то это условие. Сравнивать можно со значением, указав знак равно, как показано в примере. После символа вопроса первым идёт значение, если условие верное, вторым (через разделитель | ), если неверное. Если второе значение через разделитель не указано, то выражение не будет выведено. В условиях можно использовать выражение %s, вместо него подставится значение поля.

Вот такими несложными способами вы можете достаточно гибко формировать все параметры, прямо влияющие на мета составляющую страниц сайта, при чём достаточно один раз настроить и забыть.


Назад в Настройки сайта

manual/settings/seo-patterns.txt · Последнее изменение: 16.02.2025 14:39 — fuze

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki