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,

J'ai un soucis qui me semble obscure (c'est mon premier projet sur Thelia), j'ai installé un module de la communauté qui est fork d'un autre module que j'ai trouvé dans ce post.
Ce module permet une gestion de prix dégressif en fonction des quantités, le fork rajoute la possibilité de lier ces prix à des pse, ce qui est vraiment utile.

Il fonctionne parfaitement, mais mon client souhaite rajouter une fonctionnalité : sur la fiche produit, il veut que lorsque l'on change la quantité le prix dégressif s'applique via une petite routine js (pas bien compliqué). Je me suis dis tiens, et si j'en profité pour modifier le module et que je faisait un PR pour en faire profiter tout le monde  (parce que je je suis un mec sympa wink).

J'ai donc branché le module sur un nouveau hook product.bottom :

public function onProductBottom(HookRenderEvent $event)
{
    $productId = (int)$event->getArgument('product', 0);

    if($productId > 0)
    {
        $event->add(
            $this->render('product-bottom.tpl', [
                'product' => $productId,
            ])
        );
    }
}

Jusque là, rien bien compliqué. Je créer ensuite mon template product-bottom.tpl et je commence par faire ma petite boucle :

{strip}
    {ifloop rel="digressivePrice"}
        {$pse_digressive=[]}
        {loop type="digressive" name="digressivePrice" product_id=$product}
            {if !$pse_digressive[$PRODUCT_SALE_ELEMENTS_ID]}
                {$pse_digressive[$PRODUCT_SALE_ELEMENTS_ID]=[]}
            {/if}
            {$pse_digressive[$PRODUCT_SALE_ELEMENTS_ID][]=["from"=>$QUANTITY_FROM, "to"=>$QUANTITY_TO, 'price'=>"{format_money number=$TAXED_PRICE symbol={currency attr="symbol"}}", "promo" => "{format_money number=$TAXED_PROMO_PRICE symbol={currency attr="symbol"}}"]}
        {/loop}
        <script type="text/javascript">
            var PSE_DIGRESSIVE = {$pse_digressive|json_encode nofilter};
            console.log(PSE_DIGRESSIVE);
        </script>
    {/ifloop}
{/strip}

Et là, c'est le drame : Cannot get value of inexistent virtual column attribute_av_i18n_TITLE. (dump de l'erreur complet)

Je décide alors de déplacer mon petit bout de code dans mon template product.html de mon thème et au miracle cela fonctionne. Je suis donc partie sur cette solution pour pouvoir avancer dans mon projet.

J'aimerai comprendre pourquoi la boucle plante lorsqu'elle ce trouve dans un template du même module qui définie la loop pour ensuite pouvoir le proposer à la communauté.

Avez-vous une idée ? piste ? Est-ce fait une erreur ?

Last edited by flyos (07-01-2016 09:57:55)

Offline


Etant donné que l'erreur se produit dans ta boucle "digressive", le code Smarty ne nous aide pas beaucoup.

C'est possible de voir le code de DigressiveLoop.php ? Il y a sans doute une jointure qui pose problème...


OpenStudio Toulouse

Offline

Offline


Bonjour,

la version que vous utilisez est toujours en cours de developpement pour certaine partie sad

Pour regler cette erreur :
Aller dans le fichier : /Loop/DigressiveLoop.php
Supprimez cette partie :             

if ($pseAttr) {
                $loopResultRow->set("PRODUCT_SALE_ELEMENTS_TITLE",
                $pseAttr->getVirtualColumn("attribute_av_i18n_TITLE"));
 }

de la ligne 152 a 154.

( Je ne sais pas quand je pourrais revenir dessus pour le corriger )

Offline


Merci à tous pour vos réponses

@ROADSTER31 @ETIENNE63 Effectivement je n'ai absolument pas touché le code du repo https://github.com/Soldras/digressivepr … veLoop.php

@SOLDRAS Effectivement cela corrige bien le soucis lorsque je déplace le html/smarty dans le module, merci.

Pour le pull request, je le fait sur le repo Soldras/digressiveprice ou nexxpix/digressiveprice ?

Offline


Voici je viens de faire mon pull request directement sur le projet de base https://github.com/nexxpix/digressiveprice/pull/7

Merci à vous pour vos réponses