THELIA Forum

Welcome to the THELIA support and discusssion forum

Announcement

Rejoignez la communauté sur le Discord Thelia : https://discord.gg/YgwpYEE3y3

Offline


Bonjour à tous,

Je connais assez bien Prestashop et le développement qui tourne autour, mais je nourris quelques craintes quant à l'évolution de cette plateforme : diverses régressions introduites lors des développements, roadmap peu claire, peu d'optimisation visible et choix techniques parfois discutables.
J'envisage de monter un site de e-commerce un peu atypique. Pour faire simple, ce serait une sorte de réseau de vendeurs partageant éventuellement certaines références, mais dont les prix, les frais de port et les zones de livraison seraient à l'appréciation de chacun des vendeurs.

Avant que je ne me lance dans le code même de Thelia 2, quel retour d'expérience pouvez-vous me faire quant à la surcharge des fonctionnalités natives de la solution ?
J'ai bien une idée sur la façon de faire avec Prestashop, mais je devrais modifier assez lourdement les logiques-métier même si ça reste faisable.

Merci !

Offline


Bonjour,

Ne pouvant apparemment plus crée de ticket, je commente celui-ci dont l'intitulé correspond à me question (mais qui concerne Thelia 2) :

Comment puis-je modifier des classes existantes sans modifier le cœur de thelia (et pouvoir ainsi plus tard monté en version) ?

Exemple : sur un formulaire existant de base dans Thelia 2 (comme l'inscription), je voudrais ajouter le champ de téléphone comme obligatoire, donc ajouter des "constraint" dans le fonction "buildForm", ou dois-je créer l'override ?

Merci

Offline


Dans Thelia 2, la notion "d'override" n'existe pas. On enrichit une fonctionnalité de base en écrivant un module qui va intercepter les évènements (cf. http://doc.thelia.net/en/documentation/ … index.html - liste pas forcément à jour) qui circulent dans le core.

Par exemple, pour ajouter un champ à la forme d'inscription, tu pourrais créer un module qui déclare une forme qui étends la classe CustomerCreateForm, en y ajoutant les champs nécessaire.

Dans le fichier config.xml de ton module, tu déclares cette form comme étant la form à utiliser pour créer un client :

    <forms>
                <form name="thelia.front.customer.create" class="<nom complet de ta classe form>"/>
    </forms>

Enfin, pour traiter les champs supplémentaires, tu va créer une action (cf. http://doc.thelia.net/en/documentation/ … ions.html), qui interceptera l'event CUSTOMER_CREATEACCOUNT, en se plaçant après le code de Thelia :

public static function getSubscribedEvents()
    {
        return array(
            TheliaEvents::CUSTOMER_CREATEACCOUNT    => array('nom_de_ta_methode', 150),
        );
    }

Pour stocker les infos supplémentaires en base de données, tu devra sans doute créer une table spécifique, qui utilisera un foreign key vers la table customer.

Tu peux t'inspirer d'un des modules existants : https://github.com/thelia-modules


OpenStudio Toulouse

Offline


Salut,

Je suis en train de tenter de réécrire le mail envoyé "order_confirmation" notamment pour y joindre des pièces jointes (cgv, délais, etc). J'ai donc utilisé le système d'évènements pour réécrire sendConfirmationEmail à ma sauce. Mais le mail est envoyé en double : celui de mon module et celui du coeur.

Ne peut on pas réécrire la classe \Thelia\Action\Order pour override sendConfirmationEmail depuis mon module ? Ça ne semble pas marcher après avoir testé, sûrement parce que cette classe enfant n'est jamais chargé.

Merci

Offline


Il te faut donner au traitement de ton évènement une priorité supérieure à celle du core (donc > 128), et stopper sa propagation avec event->stopPropagation();


OpenStudio Toulouse

Offline


Impeccable Roadster, ça marche comme un charme.

Merci

++