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 ).
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)