THELIA Forum

Welcome to the THELIA support and discusssion forum

Offline

#1 Multi Template

(03-10-2017 07:28:47)


Bonjour,

Je dois essayer de rendre Thelia 2 multi template pour voir s'il peut remplacer Magento 2, c'est à dire un template par langue. Je me suis basé sur le module TemplateSwitcher

J'ai créé un template par langue appelé par le code langue fr, en, it, ... En modifiant le hooklang j'ai réussi à faire qu'en changeant de langue le template change. Mais si je modifie manuellement l'url de domaine.com/fr/ en domaine.com/en/ il detecte le changement de langue mais je n'arrive pas à lui dire de changer en même temps le template. Je ne trouve pas de module le permettant sans modifiant le core de Thelia.

Une idée ?

Merci

Offline

#2 Re: Multi Template

(03-10-2017 08:12:11)


En fait, tu peux gérer ça sans modifier le code de Thelia. Il te faut créer un petit module (ou enrichir le module TemplateSwitcher), dans lequel un EventListener va s'abonner à l'évènement KernelEvents::CONTROLLER. Dans la méthode qui est traite l'évènement, tu récupères la langue courante dans la session, et tu changes le template en fonction de cette langue :

    public function controllerListener(FilterControllerEvent $event, $eventName, EventDispatcherInterface $dispatcher)
    {
        /** @var Session $session */
        $session = $event->getRequest()->getSession();
        
        $lang = $session->getLang();
        
        // Calculer le nom du template en fonction de la langue
        $nomDuTemplate = ... ;

        // Changer le template :)
        $dispatcher()->dispatch(
            TemplateSwitcherEvent::SWITCH_TEMPLATE_EVENT,
            new TemplateSwitcherEvent($nomDuTemplate)
        );
    }

CQFDev | Sites, boutiques, modules, développement et intégration pour Thelia 1 et 2

Offline

#3 Re: Multi Template

(03-10-2017 08:16:13)


Merci pour ta réactivité, je vais tenter ça. Je découvre Thelia donc ce sera un bon essai de module.