Навигация

    Shopker - Форум

    • Зарегистрироваться
    • Войти
    • Поиск
    • Категории
    • Последние
    • Метки
    • Популярные
    • Пользователи
    • Группы
    • Вернуться на сайт

    Поддомены в качестве городов

    Поддержка
    2
    4
    79
    Загружаем больше сообщений
    • Сначала старые
    • Сначала новые
    • По количеству голосов
    Ответить
    • Ответить, создав новую тему
    Авторизуйтесь, чтобы ответить
    Эта тема была удалена. Только пользователи с правом управления темами могут её видеть.
    • S
      site1 отредактировано

      Здравствуйте, возможно ли настроить shopker для работы на поддоменах для каждого города: msk.site.ru spb.site.ru но чтобы при этом карточка товара была только одна (без дублирования на каждый город)?

      1 ответ Последний ответ Ответить Цитировать 0
      • Admin
        Admin отредактировано Admin

        В шаблоне Вы можете делать так:

        {% 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 }}, которая будет выводить нужную строку.

        Как назначить несколько доменов одному сайту Вы наверно и так знаете.

        1 ответ Последний ответ Ответить Цитировать 0
        • S
          site1 отредактировано

          admin, спасибо за ответ!
          Подробнее суть задачи:
          Сайт с товарами для основного города Москва site.ru
          Нужно сделать поддомен spb.site.ru как копию site.ru, но чтобы в шаблоне менялись контакты, адреса, телефон в шапке и в футере. На страницах категорий товаров и самих товаров все что касается Москвы менялось бы на Санкт-Петербург.

          На примере тега <h1> на странице товара "Слон белый с доставкой по Москве" заменялось бы на "Слон белый с доставкой по Санк-Петербургу".
          Кроме <h1> естественно много где еще чтобы информация локализовалась под конкретный город поддомена.
          Но фактически, чтобы была всего одна карточка товара, чтобы поменял цену в ней, и она изменилась для всех городов.

          1 ответ Последний ответ Ответить Цитировать 0
          • Admin
            Admin отредактировано Admin

            Здравствуйте. Мультидоменность у Shopker (точнее Symfony) есть. К примеру можно создать несколько сайтов, которые будут использовать один PHP-код, но разные шаблоны и базы данных.

            Но в данном случае не совсем понятно. По описанию похоже, что у Вас одинаковый контент для разных доменов. Проблем в этом не вижу, это возможно для любого сайта и движка. Или Вы хотите выводить списки товаров с фильтрацией по городу в зависимости от домена? Есть Twig-функция "contentList" https://shopker.org/documentation/content-display там есть возможность фильтрации по полям. В любом случае это не сложно реализовать, с более подробным описанием я бы смог помочь.

            1 ответ Последний ответ Ответить Цитировать 0
            • 1 / 1
            • First post
              Last post
            2020 • Shopker