THELIA Forum

Welcome to the THELIA support and discusssion forum

Announcement

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

Offline

#1 Variable foo[] dans viewurl

(20-09-2017 09:46:01)


Bonjour à tous !

J'aurais besoin de passer une variable de type "array" comme :

{viewurl view="legal" myvar="1" myarrayvar[]="2"}

Mais ça ne marche pas...

Une piste ?

Merci d'avance.

Offline


Les paramètres de viewurl sont en fait des paramètres de l'URL. Du coup, tenter d'y passer une array directement n'a pas trop de sens.

Tu peux tenter un truc de ce genre :

{$toto = [ 1, 2, 3 ]}
{viewurl view="machin" bidule=','|implode:$toto}

Ce qui donne une URL comme ça : http://taboutique.fr/?view=machin&bidule=1%2C2%2C3

Et pour récupérer l'array dans ta vue machin.html, tu feras un {$toto=','|explode:$smarty.get.bidule}

C'est ce que tu veux ?


OpenStudio Toulouse

Offline


En fait, je cherche a générer une url du type :

http://maboutique/?view=category&lang=fr&category_id=1&brand%5B%5D=1&brand%5B%5D=2

Comme si on avait cocher des cases à cocher. En fait on a une page avec des filtres sur les marques et les features. On souhaitait que toutes les marques soient cochées.
Je m'en suis sorti en faisant un test pour savoir si une marque était sélectionnée ou pas ( depuis une autre entrée du menu )

Si ça peut aider, voici mon code.

Pour le menu :

    <li class="dropdown">
        {loop type="category" name="vins.navigation.top" id="{config key="category.vins"}"}
        <a href="{$URL}" class="dropdown-toggle">{$TITLE}</a>
        {/loop}
        <ul class="dropdown-menu" role="menu">
            {loop type="brand" name="vins.navigation" order="manual"}
            <li><a href="{viewurl view="category" category_id="{config key="category.vins"}" lang="fr" brand_id=$ID}">{$TITLE}</a></li>    
            {/loop}
        </ul>
    </li>

C'est du wip, il y a des choses qui vont changer, notemment la lang...

La vue des cases à cocher

{if $smarty.get.brand_id !=NULL}
{assign var=brands_array value=[$smarty.get.brand_id]}
{else}
{assign var=brands_array value=[]}
{loop type="brand" name="all_brands"}
{$brands_array[]=$ID}
{/loop}
{*{$brands_array|@print_r}*}
{if $smarty.get.brand !=NULL}
{$brands_array = $smarty.get.brand}
{/if}
{/if}


{if $smarty.get.feature !=NULL}
{$features_array = $smarty.get.feature}
{/if}


<section id="wines-filters">
    <form id="form-filters" method="get">
        <input type="hidden" name="view" value="category">
        <input type="hidden" name="lang" value="fr">
        <input type="hidden" name="category_id" value="{config key="category.vins"}">
               <div class="filter filter-type">
            <fieldset>
                <legend class="filter-heading">Brand</legend>
                <div class="filter-content clearfix">
                    {loop type="brand" name="checkboxes_brand" order="manual"}
                    <div class="checkbox">
                        <label for="type0">
                            <input type="checkbox" name="brand[]" id="brand{$ID}" value="{$ID}"

                                   {if $ID|in_array:$brands_array}
                                   checked
                                   {/if}

                                   > {$TITLE} <span>({count type="product" brand=$ID})</span>
                        </label>
                    </div>
                    {/loop}
                </div>
            </fieldset>
            {loop type="feature" name="fieldsets_feature"}
            {$feature_id=$ID}
            <fieldset>
                <legend class="filter-heading">{$TITLE}</legend>
                <div class="filter-content clearfix">
                    {loop type="feature-availability" name="checkboxes_feature_availability"  feature=$ID order="manual"}
                    <div class="checkbox">
                        <label for="type0">
                            <input type="checkbox" name="feature[{$feature_id}][]" id="feature-$feature-id-{$ID}" value="{$ID}"

                                   {foreach from=$features_array[$feature_id] item=value}
                                   {if $ID==$value}
                                   checked
                                   {/if}                   
                                   {/foreach}

                                   > {$TITLE} <span>({count type="product" feature_availability="$feature_id:$ID"})</span>


                        </label>
                    </div>
                    {/loop}


                </div>
            </fieldset>
            {/loop}
        </div><!-- /Filter Brand -->


        <div class="group-btn">
            <button type="submit" class="btn btn-block btn-filter">Submit</button>
        </div>
    </form>
</section><!-- /.filters -->

Je viens de voir qu'il y a un type0 que se promène et qui sert à rien...

Voilà.

Qu'en pensez-vous ?