Kupte si prémiovou propagaci a toto místo bude vaše.
Zobrazují se odpovědi 1 až 7 z 7

IF - více podmínek

  1. Zdravím,
    v košíku potřebuji zobrazit kód podle toho co košík obsahuje, znám ID produktů v košíku, podle toho potřebuji vypsat:

    V košíku je ID 12 nebo 13 nebo 14

    {if $product.id_product == 12 || $product.id_product == 13 || $product.id_product == 14}
    **vypíšu kód produktů ID 15 a 16**

    {elseif $product.id_product == 12 || $product.id_product == 13 || $product.id_product == 14 AND $product.id_product == 15}
    **vypíšu kód produktu ID 16**

    {elseif $product.id_product == 12 || $product.id_product == 13 || $product.id_product == 14 AND $product.id_product == 16}
    **vypíšu kód produktu ID 15**

    {else $product.id_product == 15 AND $product.id_product == 16}
    **nechám prázdné**

    V podstatě se mi jedná o to, že k určitým produktům zobrazuji dva produkty k dokoupení, a pokud jeden z nich přidám/je v košíku, tak zobrazím jen ten druhý, a pokud jsou v košíku oba tak nezobrazím nic.

    Díky za rady!

  2. Co se právě děje na Webtrhu?
  3. jestli chápu správně, máš nějaké produkty (12, 13, 14) a pokud se objeví v košíku, chceš vypsat jako doporučení produkty (15, 16), ale jen jestli je také nemá v košíku?

    osobně bych si nachystal nejprve nějaké nastavení, proměnné a poté udělal univerzální smyčku, která to zpracuje.

    Nevím, jak to chceš zobrazovat, jestli na řádku u daného produkty nebo až za výpisem produktů v košíku (tuhle variantu jsem zvolil teď já):

    PHP kód:
    <?php

    // od nekud si naplnis pole s vypisem produktu, ktere ma uzivatel v kosiku
    $produkty_v_kosiku = [1213141518];
    $produkty_k_doporuceni = Array();

    // nachystam si nastaveni, ktere produkty doporucovat ke kterym
    $produkty_k_doporuceni[] = [
        
    'v_kosiku' => [121314],
        
    'doporuc' => [1516]
    ];

    // neni problem pridat i dalsi, tj. mit vice paru
    $produkty_k_doporuceni[] = [
        
    'v_kosiku' => [1819],
        
    'doporuc' => [11]
    ];

    foreach(
    $produkty_k_doporuceni as $doporuceni) {
        
    // ma zakaznik v kosiku nejaky produkt, ke kterymu chceme neco doporucit?
        // funkce intersect mi vrati prazdne pole pokud v kosiku neni zadny produkt z doporuceni[v_kosiku]
        
    if (array_intersect($produkty_v_kosiku$doporuceni['v_kosiku'])) {
            
    // zjistit id produktu k doporuceni, tj. ty, ktere jeste nejsou v kosiku
            
    $doporuc array_diff($doporuceni['doporuc'], array_intersect($produkty_v_kosiku$doporuceni['doporuc']));
            
    // vypis produktu k doporuceni
            // var_dump($doporuc);
        
    }
    }

  4. Ano, pokud je nemá v košíku, vypsat, pokud má, nevypisovat.

    Tak musím říct, že tady se nechytám vůbec :-) a tohle asi ani po tvé radě nerozjedu, co jsem udělal je tohle:

    PHP kód:
    <!-- ID produktu které jsou v kosiku -->
    <
    div class="produkty-kosik">
    {foreach 
    $products as $product}
      {
    $product.id_product}
    {/foreach}
    </
    div>
    <!-- 
    #SOUVISEJICI PRODUKT -->
    {if $product.id_product == || $product.id_product == 17 || $product.id_product == 18 || $product.id_product == 19 || $product.id_product == 20 || $product.id_product == 21 || $product.id_product == 22 || $product.id_product == 23}
    <
    h3><center>Nezapomeňte dokoupit</center></h3>
    <
    table id="cart_summary">
    <
    thead>
    <
    tr>
        <
    th class="cart_product first_item">Produkt</th>
        <
    th class="cart_description item">Popis</th>
        <
    th class="cart_unit item">Cena</th>
        
    </
    tr>
    </
    thead>
    <
    tbody>    
    <
    tr id="product" class="cart_item address">
        <
    td class="cart_product">
            <
    a href="" title=""><img src="" alt="" width="98" height="98" /></a>
        </
    td>
        <
    td class="cart_description">
                            <
    class="product-name"><a href="" title="">Produkt ID=15</a></p>
                 <
    p style="font-size:12px;"></p>
                              <
    div class="clearfix" style="margin-top:5px">
                                                    <
    div class="no-print">
                                                        <
    class="exclusive button ajax_add_to_cart_button" href="{$link->getPageLink('cart'trueNULL"qty=1&amp;id_product={$accessory.id_product|intval}&amp;token={$static_token}&amp;add")|escape:'html':'UTF-8'}data-id-product="15" title="{l s='Add to cart'}">
                                                            <
    span>Přidat do košíku</span>
                                                        </
    a>
                                                    </
    div>
                                            </
    div>
        </
    td>
        <
    td class="cart_unit">
            <
    span class="price" id="product_price">
                                                    <
    li class="price">390 Kč</li>
                                                        </
    span>
        </
    td>
    </
    tr>
    </
    tbody>
    <
    tbody>    
    <
    tr id="product" class="cart_item address">
        <
    td class="cart_product">
            <
    a href="" title=""><img src="" alt="" width="98" height="98" /></a>
        </
    td>
        <
    td class="cart_description">
                            <
    class="product-name"><a href="" title="">Produkt ID=25</a></p>
                 <
    p style="font-size:12px;"></p>
                              <
    div class="clearfix" style="margin-top:5px">
                                                    <
    div class="no-print">
                                                        <
    class="exclusive button ajax_add_to_cart_button" href="{$link->getPageLink('cart'trueNULL"qty=1&amp;id_product={$accessory.id_product|intval}&amp;token={$static_token}&amp;add")|escape:'html':'UTF-8'}data-id-product="25" title="{l s='Add to cart'}">
                                                            <
    span>Přidat do košíku</span>
                                                        </
    a>
                                                    </
    div>
                                            </
    div>
        </
    td>
        <
    td class="cart_unit">
            <
    span class="price" id="product_price">
                                                    <
    li class="price">390 Kč</li>
                                                        </
    span>
        </
    td>
    </
    tr>
    </
    tbody>
    {elseif 
    $product.id_product == || $product.id_product == 17 || $product.id_product == 18 || $product.id_product == 19 || $product.id_product == 20 || $product.id_product == 21 || $product.id_product == 22 || $product.id_product == 23 AND $product.id_product == 15}
    <
    h3><center>Nezapomeňte dokoupit</center></h3>
    <
    table id="cart_summary">
    <
    thead>
    <
    tr>
        <
    th class="cart_product first_item">Produkt</th>
        <
    th class="cart_description item">Popis</th>
        <
    th class="cart_unit item">Cena</th>
        
    </
    tr>
    </
    thead>
    <
    tbody>    
    <
    tr id="product" class="cart_item address">
        <
    td class="cart_product">
            <
    a href="" title=""><img src="" alt="" width="98" height="98" /></a>
        </
    td>
        <
    td class="cart_description">
                            <
    class="product-name"><a href="" title="">ID=25</a></p>
                 <
    p style="font-size:12px;"></p>
                 <
    div class="clearfix" style="margin-top:5px">
                                                    <
    div class="no-print">
                                                        <
    class="exclusive button ajax_add_to_cart_button" href="{$link->getPageLink('cart'trueNULL"qty=1&amp;id_product={$accessory.id_product|intval}&amp;token={$static_token}&amp;add")|escape:'html':'UTF-8'}data-id-product="25" title="{l s='Add to cart'}">
                                                            <
    span>Přidat do košíku</span>
                                                        </
    a>
                                                    </
    div>
                                            </
    div>
        </
    td>
        <
    td class="cart_unit">
            <
    span class="price" id="product_price">
                                                    <
    li class="price">490 Kč</li>
                                                        </
    span>
        </
    td>
    </
    tr>
    </
    tbody>
    </
    table><br />
    {elseif 
    $product.id_product == || $product.id_product == 17 || $product.id_product == 18 || $product.id_product == 19 || $product.id_product == 20 || $product.id_product == 21 || $product.id_product == 22 || $product.id_product == 23 AND $product.id_product == 25}
    <
    tbody>    
    <
    tr id="product" class="cart_item address">
        <
    td class="cart_product">
            <
    a href="" title=""><img src="" alt="" width="98" height="98" /></a>
        </
    td>
        <
    td class="cart_description">
                            <
    class="product-name"><a href="" title="">ID=15</a></p>
                 <
    p style="font-size:12px;"></p>
                 <
    div class="clearfix" style="margin-top:5px">
                                                    <
    div class="no-print">
                                                        <
    class="exclusive button ajax_add_to_cart_button" href="{$link->getPageLink('cart'trueNULL"qty=1&amp;id_product={$accessory.id_product|intval}&amp;token={$static_token}&amp;add")|escape:'html':'UTF-8'}data-id-product="15" title="{l s='Add to cart'}">
                                                            <
    span>Přidat do košíku</span>
                                                        </
    a>
                                                    </
    div>
                                            </
    div>
        </
    td>
        <
    td class="cart_unit">
            <
    span class="price" id="product_price">
                                                    <
    li class="price">490 Kč</li>
                                                        </
    span>
        </
    td>
    </
    tr>
    </
    tbody>
    </
    table><br />
    {else}
    <
    h3>Všechno už máš</h3>
    {/if} 
    Přes foreach se ve zdrojovém kódu zobrazují ID produktů, které jsou v košíku, pokud se IF nějakému rovná, zobrazí se dva produkty (ID=15 a ID=25), ELSEIF obsahuje ID produktů AND ID=15 zobrazí se produkt ID=25 (a naopak), jenže i když jsou v košíku oba (15 a 25) nezobrazí se ELSE ale jeden z 15 nebo 25.

    V kódu bude možná chybka, psal jsem to teď znovu sem

  5. To máš úplně špatně. Foreach na začátku udělá jen to, že vypíše všechny ID a do $product přiřadí postupně všechny produkty z košíku a pak skončí, takže ve všech následujících podmínkách máš v $product poslední prvek z pole $products.
    I kdybys to obalil foreachem celé, tak to bude k ničemu, buď to přepiš podle Tomáše, nebo jestli to chceš řešit takhle krkolomně, tak foreach smaž a do těch podmínek použij in_array.
    Kód:
    {if in_array(12, $products)||in_array(13, $products)||14...}
    = jesli je v poli produktů 12, nebo 13 nebo 14...
      
      {if ! in_array(15, $products)}
    = jestli tam není 15
    {/if}
    
      {if ! in_array(16, $products)}
    = jestli tam není 16
    {/if}
    
    
    
    {/if}

  6. Zkusím dnes obě možnosti :-) díky.

    ---------- Příspěvek doplněn 31.10.2019 v 06:00 ----------

    Pokud to tedy chápu tak by to mělo vypadat nějak takhle

    PHP kód:
    {if in_array(12$products)||in_array(13$products)||14...}
    echo 
    "'kód pro zobrazení ID produktů 15 a 16";
      
      {if ! 
    in_array(15$products)}
    echo 
    "'kód pro zobrazení pokud tam je ID 15";
    {/if}

      {if ! 
    in_array(16$products)}
    echo 
    "'kód pro zobrazení pokud tam je ID 16";
    {/if}

    {/if} 
    A co, pokud tam jsou ID produktů 15 i 16 a chci aby se nezobrazil žádný kód/produkt?

    Normálně bych se na to vypšouk, ale když už jsem to začal zajímá mě to :-) PS nejsem programátor jen nadšenec..

  7. zdar, takhle
    Kód:
    {if in_array(12, $products)||in_array(13, $products)||14...}
      
      {if ! in_array(15, $products)}
    echo "'kód pro zobrazení pokud tam je ID 15";
    {/if}
    
      {if ! in_array(16, $products)}
    echo "'kód pro zobrazení pokud tam je ID 16";
    {/if}
    
    {/if}
    když tam bude 15 i 16 tak nebude platit žádná z vnitřních podmínek a nic to nevypíše

    ---------- Příspěvek doplněn 31.10.2019 v 07:40 ----------

    pardon - ještě místo $products musí být něco jako $productIDs, kde bude jen pole samotných ID. To ani nevím jestli ve Smarty jde, tak bude lepší připravit v php mimo šablonu

  8. Díky, vyzkouším ID produktu Presta vypisuje přes product.id_product

    ---------- Příspěvek doplněn 31.10.2019 v 19:13 ----------

    Tak jsem zkoušel ale chyba žádná, výpis žádný :-) nejspíš tam je potřeba nějak vypsat ty ID produktů, které jsou v košíku, ale to nevím jak..

Hostujeme u Server powered by TELE3