Поддомены в качестве городов
-
Здравствуйте, возможно ли настроить shopker для работы на поддоменах для каждого города: msk.site.ru spb.site.ru но чтобы при этом карточка товара была только одна (без дублирования на каждый город)?
-
В шаблоне Вы можете делать так:
{% if app.request.getHttpHost() == 'spb.site.ru' %} по Санкт-Петербургу {% else %} по Москве {% endif %}
Другой более удобный вариант это создать глобальные переменные в шаблонах. Для этого нужно положить в папку "src/App/EventSubscriber/" файл "CustomTwigFieldsSubscriber.php" с примерно таким содержанием:
<?php namespace App\EventSubscriber; use Symfony\Component\DependencyInjection\ContainerInterface; use Symfony\Component\EventDispatcher\EventSubscriberInterface; use Symfony\Component\HttpKernel\Event\RequestEvent; use Symfony\Component\HttpKernel\KernelEvents; class CustomTwigFieldsSubscriber implements EventSubscriberInterface { protected $container; public function __construct(ContainerInterface $container) { $this->container = $container; } public function onKernelRequest(RequestEvent $event) { $request = $event->getRequest(); $host = $request->getHttpHost(); $cityString = $host === 'spb.site.ru' ? 'по Санкт-Петербургу' : 'по Москве'; /** @var \Twig\Environment $twig */ $twig = $this->container->get('twig'); $twig->addGlobal('cityString', $cityString);// Добавляем глобальную переменную в шаблон } public static function getSubscribedEvents() { return [ KernelEvents::REQUEST => [['onKernelRequest', 10]] ]; } }
Этот подписчик автоматически будет использоваться после очистки кэша сайта. Тогда в любом шаблоне будет доступна переменная
{{ cityString }}
, которая будет выводить нужную строку.Как назначить несколько доменов одному сайту Вы наверно и так знаете.
-
admin, спасибо за ответ!
Подробнее суть задачи:
Сайт с товарами для основного города Москва site.ru
Нужно сделать поддомен spb.site.ru как копию site.ru, но чтобы в шаблоне менялись контакты, адреса, телефон в шапке и в футере. На страницах категорий товаров и самих товаров все что касается Москвы менялось бы на Санкт-Петербург.На примере тега <h1> на странице товара "Слон белый с доставкой по Москве" заменялось бы на "Слон белый с доставкой по Санк-Петербургу".
Кроме <h1> естественно много где еще чтобы информация локализовалась под конкретный город поддомена.
Но фактически, чтобы была всего одна карточка товара, чтобы поменял цену в ней, и она изменилась для всех городов. -
Здравствуйте. Мультидоменность у Shopker (точнее Symfony) есть. К примеру можно создать несколько сайтов, которые будут использовать один PHP-код, но разные шаблоны и базы данных.
Но в данном случае не совсем понятно. По описанию похоже, что у Вас одинаковый контент для разных доменов. Проблем в этом не вижу, это возможно для любого сайта и движка. Или Вы хотите выводить списки товаров с фильтрацией по городу в зависимости от домена? Есть Twig-функция "contentList" https://shopker.org/documentation/content-display там есть возможность фильтрации по полям. В любом случае это не сложно реализовать, с более подробным описанием я бы смог помочь.