Шорткод выводит контент в зависимости от активной локации посетителя (регион, тип региона, страна, родительский регион). Позволяет показывать разный текст, цены, адреса и телефоны. Поддерживает подстановку данных региона через {get} и {get_phone_href}.
Назначение
- Условный вывод контента по активному региону, стране или родительскому региону
- Подстановка данных региона (телефон, адрес, название и т.д.) в текст
- Вывод контента при наличии поддомена, региональной директории или региона в URL
Синтаксис
Общая конструкция шорткода:
[wt_location атрибут="значение" get="имя переменной"]Контент перед значением: {get} контент после значения[/wt_location]
атрибут="значение"— любые аргументы (show_for, show_for_country, not_show_for и т.д.)get="имя переменной"— ключ поля для подстановки (region_name, phone и др.){get}— плейсхолдер, заменяемый на значение указанного вgetполя
Простой вариант:
[wt_location]Контент для всех регионов[/wt_location]
или с аргументами:
[wt_location show_for_country='Россия']от 100 000 руб[/wt_location]
с подстановкой данных:
[wt_location get="region_name"]Ваш город: {get}[/wt_location]
Аргументы
| Аргумент | Описание | По умолчанию |
|---|---|---|
show_for | Совпадение региона (через запятую) | — |
not_show_for | Несовпадение региона | — |
show_for_type | Совпадение типа региона (через запятую): city, region, country и др. Фильтрация по типу локации актуализирована в 1.18; примеры — ниже. | — |
not_show_for_type | Несовпадение типа региона (список типов через запятую). С 1.18 — см. примеры ниже. | — |
show_for_parent | Совпадение родителя (область, край) | — |
not_show_for_parent | Несовпадение родителя | — |
show_for_country | Совпадение страны активной локации: перечисление названий стран через запятую (как в данных региона). С версии 1.18 — см. примеры ниже. | — |
not_show_for_country | Не выводить контент, если страна совпадает с одной из перечисленных. С версии 1.18 — см. примеры ниже. | — |
get | Ключ поля: region, region_name, phone, parent_name, country_name, subdomain и др. Полный список — в настройке регионов. | — |
get_format | phone_href — телефон как ссылка tel:... | false |
before | Текст слева от итогового вывода; только если задан get и значение поля не пусто (в т.ч. после default). HTML не экранируется. | — |
after | Текст справа от итогового вывода; то же условие. HTML не экранируется. | — |
class | С версии 1.18: если атрибут задан, итоговый вывод оборачивается в <span class="…">…</span>. В значении — один или несколько CSS-классов через пробел. | — |
default | Значение по умолчанию, если поле из get пусто | — |
is_set | Выводить только если указанное поле установлено | — |
show_is_root_directory | Только при региональной директории в корне | false |
show_is_url_path_location | Только при регионе в URL | false |
show_is_subdomain | Только при поддомене | false |
shortcode | Обрабатывать вложенные шорткоды | false |
position | Уникальная метка для объединения нескольких шорткодов в группу. Выводится контент первого подходящего условия (см. примеры). | — |
Подстановки в контенте (маски)
| Плейсхолдер | Описание | Пример |
|---|---|---|
{get} | Значение поля без изменений | +7 (927) 927-13-13 |
{get_phone_href} | Ссылка для звонка tel:... | tel:+79279271313 |
Примеры
Условный вывод по стране и региону
Несколько фильтров в одном шорткоде объединяются через И: контент выводится только если выполняются все заданные условия (show_for_parent, not_show_for, show_for_country и т.д.).
[wt_location show_for_country='Россия']от 100 000 руб[/wt_location]
[wt_location show_for_country='Россия,Казахстан,Беларусь']Показ только для этих стран[/wt_location]
[wt_location not_show_for_country='Украина']Скрыть для Украины[/wt_location]
[wt_location show_for_type='city']Текст только для типа city[/wt_location]
[wt_location not_show_for_type='country']Скрыть для типа country[/wt_location]
[wt_location show_for_parent='Самарская область']Текст для Самарской области[/wt_location]
[wt_location show_for='Москва,Тольятти']Москва или Тольятти[/wt_location]
[wt_location not_show_for='Владивосток,Самара']не Владивосток и не Самара[/wt_location]
[wt_location show_for_parent='Самарская область' not_show_for='Самара']Доставка по области[/wt_location]
Последний пример: текст виден для городов Самарской области, кроме Самары (Тольятти — да, Самара — нет, Москва — нет).
Вывод активного региона и поддомена
[wt_location get="region_name"/]
[wt_location get="region_name"][/wt_location]
[wt_location get="region_name" class="current-region"/]
[wt_location get="region_name" class="current-region text-bold"]Ваш город: {get}[/wt_location]
[wt_location get="region_name" before="г. " /]
[wt_location get="region_name" before="г. " after="!"]{get}[/wt_location]
[wt_location get="subdomain"/]
Телефон
[wt_location get="phone"/]
[wt_location get="phone" before="Тел: " /]
[wt_location get="phone"]Тел: {get}[/wt_location]
[wt_location get="phone"]Тел: <a href="{get_phone_href}">{get}</a>[/wt_location]
[wt_location get="phone" get_format="phone_href"/]
[wt_location get="phone" default="—" before="Тел: "]{get}[/wt_location]
[wt_location get="email"/]
[wt_location get="email"]Email: {get}[/wt_location]
[wt_location get="email"]Email: <a href="mailto:{get}">{get}</a>[/wt_location]
[wt_location get="email" default="info@example.com"]{get}[/wt_location]
Адрес
[wt_location get="address"/]
[wt_location get="address"]Адрес офиса: {get}[/wt_location]
[wt_location get="address" default="Адрес уточняйте у менеджера"]{get}[/wt_location]
Название региона в падежах
Необходимо предварительно добавить написание в настройках региона (REGIONS_SETUP.md):
[wt_location get="region_name_nominative"]есть {get}[/wt_location]
[wt_location get="region_name_genitive"]нет {get}[/wt_location]
[wt_location get="region_name_dative"]по {get}[/wt_location]
[wt_location get="region_name_accusative"]вижу {get}[/wt_location]
[wt_location get="region_name_instrumental"]горжусь {get}[/wt_location]
[wt_location get="region_name_prepositional"]в {get}[/wt_location]
Название родителя (области) в падежах
[wt_location get="parent_name_nominative"]есть {get}[/wt_location]
[wt_location get="parent_name_genitive"]нет {get}[/wt_location]
[wt_location get="parent_name_dative"]по {get}[/wt_location]
[wt_location get="parent_name_accusative"]вижу {get}[/wt_location]
[wt_location get="parent_name_instrumental"]горжусь {get}[/wt_location]
[wt_location get="parent_name_prepositional"]в {get}[/wt_location]
Группа с fallback (position)
Выводится контент первого подходящего условия:
[wt_location position=1 show_for='Москва,Тольятти']Москва или Тольятти[/wt_location]
[wt_location position=1 not_show_for='Владивосток,Самара']не Владивосток и не Самара[/wt_location]
[wt_location position=1]отображаем в случае несовпадения условий выше[/wt_location]
Вложенные шорткоды
[wt_location show_for='Москва' shortcode=true][shortcode/][/wt_location]
Город в заголовке страницы
Не рекомендуется вставлять шорткод в название страницы (title): город может подставляться в пункты меню и другие неконтролируемые области шаблона. Лучше добавлять название города непосредственно в исходном коде шаблона страницы (см. PHP_FUNCTIONS.md).
Технические детали
- Обработчик:
WtContacts::shortcodeLocation() - Файл:
modules/wt_contacts/wt_contacts.php - Данные:
WT::$location->getValue('ключ')
См. также
- Шорткод wt_contacts — устаревший вывод одного поля по ключу
{return}