Как выводить разный контент в шаблоне Smarty в зависимости от поддомена в Webasyst
Если вы используете Webasyst и хотите показывать уникальный контент для каждой витрины (на поддоменах вроде sochi.site.ru, krasnodar.site.ru), это можно реализовать на уровне шаблона, без PHP-кода. Всё делается средствами Smarty.
Зачем это нужно
Допустим, у вас одна установка Webasyst с несколькими витринами:
- sochi.site.ru
- rostov-na-donu.site.ru
- krasnodar.site.ru
И вы хотите, чтобы на каждой из них отображались уникальные заголовки, тексты или блоки.
Решение на Smarty
В нужном .html-шаблоне используйте следующее:
Smarty
{assign var="host" value=$smarty.server.HTTP_HOST}
{if strpos($host, '.site.ru') !== false}
{assign var="subdomain_parts" value="`$host`"|explode:"."}
{assign var="subdomain" value=$subdomain_parts[0]}
{else}
{assign var="subdomain" value=""}
{/if}
{if $subdomain == 'sochi'}
<h1>Добро пожаловать во флористический центр Сочи</h1>
{elseif $subdomain == 'rostov-na-donu'}
<h1>Цветы в Ростове-на-Дону — с любовью</h1>
{elseif $subdomain == 'krasnodar'}
<h1>Краснодарский филиал Floramour</h1>
{else}
<h1>Общий сайт сети Floramour</h1>
{/if}Как работает
- {$smarty.server.HTTP_HOST} — получает полный домен, например sochi.site.ru.
- explode разбивает строку по точкам, берём [0] — это и есть поддомен.
- Далее — обычные if/elseif, чтобы отобразить нужный блок в зависимости от города.


