THELIA Forum

Welcome to the THELIA support and discusssion forum

Announcement

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

Offline

#1 Condition ifloop

(26-06-2015 09:26:56)


Bonjour,

j'ai un probleme avec la condition ifloop

                {capture "technicalcharacteristics"}
                    {ifloop rel="feature_technicalcharacteristics"}
                        <div class="table-responsive">
                            <table class="table" border="0" cellspacing="5" cellpadding="0">
                              <tbody>
                              {loop name="feature_technicalcharacteristics" type="feature" product="{$ID}"}
                              {if preg_match("/Technical characteristics/", $CHAPO)}
                              {ifloop rel="feature_value_technicalcharacteristics"}
                                <tr>
                                  <td>{$TITLE}</td>
                                  <td>:</td>
                                  <td>
                                  {loop name="feature_value_technicalcharacteristics" type="feature_value" feature="{$ID}" product="{product attr="id"}"}
                                        {if $LOOP_COUNT > 1}, {else} {/if}
                                        {if $IS_FREE_TEXT == 1}{$FREE_TEXT_VALUE}{else}
                                          {if $TITLE=="true"}<span class="glyphicon glyphicon-ok" aria-hidden="true"></span>{else}{$TITLE}{/if}
                                        {/if}
                                  {/loop}
                                  </td>
                                </tr>
                              {/ifloop}
                              {/if}
                              {/loop}
                              </tbody>
                            </table>
                        </div>
                    {/ifloop}
                {/capture}

cela me renvoie

<div class="table-responsive">
<table class="table" border="0" cellspacing="5" cellpadding="0">
<tbody></tbody>
</table>
</div>

meme si la boucle name="feature_technicalcharacteristics"  est vide

je ne voie pas mon erreur

Offline

#2 Re: Condition ifloop

(26-06-2015 10:05:09)


Bonjour,
Etes vous sur que la boucle est vide.
Vous avez la condition suivante dans la boucle.

{if preg_match("/Technical characteristics/", $CHAPO)}

C'est peut etre elle qui empêche l'affichage du contenu

Le ifloop se base sur le nombre de résultats que va retourner la loop, et pas sur le fait qu'elle contient ou pas un contenu.

Cordialement


Développeur Web chez OpenStudio
Thelia Module, Thelia School, My GitHub, My Twitter

Offline

#3 Re: Condition ifloop

(26-06-2015 11:47:29)


oui j'en suis sur en regardant la source generee les 2 tbody se touchent
la condition marche tres bien

c'est justement quand la boucle name="feature_value_technicalcharacteristics" est vide
que cela me renvoie

<div class="table-responsive">
<table class="table" border="0" cellspacing="5" cellpadding="0">
<tbody></tbody>
</table>
</div>

alors que cela devrait ne rien me renvoyer

la loop me renvoie des resultats, mais ils ne remplissent pas la condition
il faudrait que je mette la condition dans la boucle ? mais pas possible....

Last edited by zzuutt (26-06-2015 11:48:55)

Offline

#4 Re: Condition ifloop

(26-06-2015 13:49:59)


Oui, mais ans la condition

{if preg_match("/Technical characteristics/", $CHAPO)}

La loop retourne affiche des résultats, donc le ifloop est déclenché.
La condition fait juste en sorte que le résultat ne s'affiche pas. Mais cela n'influence pas le ifloop.

Il y a une solution, mais elle n'est pas très propre. C'est de compter avant.

    {$nbResult = 0}
    {loop name="feature_technicalcharacteristics" type="feature" product=$ID}
    {if preg_match("/Technical characteristics/", $CHAPO)}
        {$nbResult = $nbResult + 1}
    {/if}
    {/loop}
    
    {if $nbResult}
        <div class="table-responsive">
            <table class="table" border="0" cellspacing="5" cellpadding="0">
                <tbody>
                {loop name="feature_technicalcharacteristics" type="feature" product=$ID}
                {if preg_match("/Technical characteristics/", $CHAPO)}
                    {ifloop rel="feature_value_technicalcharacteristics"}
                        <tr>
                            <td>{$TITLE}</td>
                            <td>:</td>
                            <td>
                                {loop name="feature_value_technicalcharacteristics" type="feature_value" feature=$ID product={product attr="id"}}
                                {if $LOOP_COUNT > 1}, {else} {/if}
                                {if $IS_FREE_TEXT == 1}{$FREE_TEXT_VALUE}{else}
                                    {if $TITLE=="true"}<span class="glyphicon glyphicon-ok" aria-hidden="true"></span>{else}{$TITLE}{/if}
                                {/if}
                                {/loop}
                            </td>
                        </tr>
                    {/ifloop}
                {/if}
                {/loop}
                </tbody>
            </table>
        </div>
    {/if}

Sinon faut créer une loop en php qui étend la loupe feature et ajouter le comportement souhaité.

Tu peux aussi essayer d'utiliser ce module.
https://github.com/thelia-modules/FeatureType
Tu crées un type technical_characteristics
Tu l'associes à tes caractéristiques.
Puis après :

{loop name="feature_extend_feature_type" type="feature_extend_feature_type" feature_type_slug="technical_characteristics" product=$ID}

{/loop}

Si associé alors la loop boucle sinon non.
C'est à tester.


Développeur Web chez OpenStudio
Thelia Module, Thelia School, My GitHub, My Twitter

Offline

#5 Re: Condition ifloop

(29-06-2015 07:36:47)


Merci MrGuillou

Je vais essayer d'utiliser le module FeatureType se sera plus propre vu que j'ai plusieurs type a filtrer


Edit:
Le module Featuretype correspond a ce que je recherchais, parfait !!
grand Merci

Last edited by zzuutt (29-06-2015 08:38:13)

Offline

#6 Re: Condition ifloop

(29-06-2015 08:04:41)


Ok,
Il y a le meme pour les déclinaisons.
https://github.com/thelia-modules/AttributeType


Développeur Web chez OpenStudio
Thelia Module, Thelia School, My GitHub, My Twitter

Offline

#7 Re: Condition ifloop

(29-06-2015 09:10:02)


Il y a un petit probleme avec le module FeatureType

Si je cree les slugs
feature_technicalcharacteristics                 -> Ok
feature_technicalcharacteristics_general   -> Ok
feature_technicalcharacteristics_transmission -> Erreur le nom doit etre unique.....

impossible de rajouter le 3ieme, pourtant il est unique.....

si je clique sur copy
feature_technicalcharacteristics   il me cree bien feature_technicalcharacteristics_copy
feature_technicalcharacteristics_general  -> feature_technicalcharacteristics_general_copy   -> erreur ......

Last edited by zzuutt (29-06-2015 09:17:09)

Offline

#8 Re: Condition ifloop

(29-06-2015 09:21:59)


En effet, la longueur est limitée à 39 caractères dans le template du module.
Alors que normalement, elle devrait être à 50.
Je vais changer cela dans la soirée. Si tu veux passer cette sécurité de suite, il faut que tu changes dans le template le nombre de caractère max de 39 à 50.
FeatureType/templates/backOffice/default/feature-type/include/form-generic.html

Avant :

<input type="text" id="{$prefix}{$label_attr.for}" class="form-control" name="{$name}" value="{$value}" required pattern="{literal}[a-z][a-z_0-9]{3,39}{/literal}"
           title="{intl l="Must be single, and only numbers, lowercase letters, underscore" d="featuretype.bo.default"}"
           placeholder="{intl l="Enter slug" d="featuretype.bo.default"}">

Après :

<input type="text" id="{$prefix}{$label_attr.for}" class="form-control" name="{$name}" value="{$value}" required pattern="{literal}[a-z][a-z_0-9]{3,50}{/literal}"
           title="{intl l="Must be single, and only numbers, lowercase letters, underscore" d="featuretype.bo.default"}"
           placeholder="{intl l="Enter slug" d="featuretype.bo.default"}">

Développeur Web chez OpenStudio
Thelia Module, Thelia School, My GitHub, My Twitter

Offline

#9 Re: Condition ifloop

(29-06-2015 09:38:21)


Parfait ! comme d'hab
Merci

Offline

#10 Re: Condition ifloop

(29-06-2015 19:11:28)


Voila, c'est fixé sur le dépôt des modules FeatureType et AttributeType.
Pour le moment c'est uniquement sur la branche master. Mais la modification sera intégrée dans la version 1.2 des modules.
https://github.com/thelia-modules/FeatureType
https://github.com/thelia-modules/AttributeType
Merci de nous avoir permis de trouver ce bug.
Cordialement,


Développeur Web chez OpenStudio
Thelia Module, Thelia School, My GitHub, My Twitter