Jump to content

Ceny przy kombinacjach (atrybutach) produktów na szablonie (widoku) produktu


bboymietek

Recommended Posts

Witam serdecznie.

Mam prośbę o pomoc w sprawie dodania cen przy kombinacjach produktu na stronie (szablonie) produktu (product.tpl).

 

Przykład zastosowania:

Mam produkt z 3 kombinacjami (3 rozmiary: S,M,L) i wyświetlam te kombinacje jako przyciski jednokrotnego wyboru, czyli Radio Buttony, ale chciałbym aby przy nazwach atrybutów tj.:

  • S
  • M
  • L

pojawiała się też cena tego wariantu. Czyli to co potrzebuje wyglądało by tak:

  • S - 22 zł
  • M - 33 zł
  • L - 50 zł

Bardzo proszę o pomoc w rozwiązaniu tego problemu.

 

 

Link to comment
Share on other sites

OK, teraz wygląda na to że działa, jeszcze powiedz czy napewno dobrze wkleiłem kod do szablonu:

 

{elseif ($group.group_type == 'radio')}
<ul>
{foreach from=$group.attributes key=id_attribute item=group_attribute}
<li>
<input type="radio" class="attribute_radio opcjeRadio" name="{$groupName|escape:'html':'UTF-8'}" value="{$id_attribute}" {if ($group.default == $id_attribute)} checked="checked"{/if} />
<span>{$group_attribute|escape:'html':'UTF-8'}</span>
<span class="priceOfAttr">
 

//wklejony kod z postu na forum
{foreach from=$attribute_impacts key=idattribute item=ai}
{if $ai.id_attribute == $id_attribute && $ai.price != 0}
- {convertPrice price=$ai.price}
{/if}
{/foreach}

//koniec kodu z postu naforum

</span>
</li>
{/foreach}

</ul>
{/if}

 

 

Czy mógłbyś w skrócie wyjaśnić kod w php i szablonie? (dla mnie i dla przyszłych forumowiczów)

Nie do końca rozumiem czemu tam jest pętla zrobiona, jeśli każda z kombinacji ma tylko jedną cenę chyba.

Link to comment
Share on other sites

Tak jest skonstruowane zapytanie do bazy w override (funkcja getImpactPrices), że zwraca wynik który najlepiej otrzymać pętlą ponieważ zwraca wszystkie wpływy ceny dla jednego produktu i każdy z nich otrzymany jest foreachem. Nic w sumie nadzwyczajnego a i wydajność jest również dobra.

Gdy użyjesz funkcji ddd($result); przed return $result w funkcji getImpactPrices to uzyskasz info o tym co funkcja wzięła czyli przykładowo: (nie rób tego na produkcji tylko, na wersji testowej lub wyłączonym sklepie).
 

Array
(
    [0] => Array
        (
            [price] => 0.00
            [id_attribute] => 307
        )

    [1] => Array
        (
            [price] => 0.00
            [id_attribute] => 308
        )

    [2] => Array
        (
            [price] => 0.00
            [id_attribute] => 517
        )

    [3] => Array
        (
            [price] => 0.00
            [id_attribute] => 534
        )

    [4] => Array
        (
            [price] => 0.00
            [id_attribute] => 535
        )

    [5] => Array
        (
            [price] => 0.00
            [id_attribute] => 557
        )

    [6] => Array
        (
            [price] => 0.00
            [id_attribute] => 715
        )

    [7] => Array
        (
            [price] => 0.00
            [id_attribute] => 1278
        )

)

Jeszcze jedna uwaga, tam na samym końcu w poście napisałem, że zwrócona cena jest ceną bez podatku więc w linii {convertPrice price=$ai.price} zamień na {convertPrice price=$ai.price*1.23} (taki trochę hardcode, ale podatek nie zmienia się zby często).

 

Uwaga na przyszłość: kod wklejaj na forum poprzez code (te dwa <> znaczniki w edytorze) i przez ctrl+shift+v - wtedy wklejony kod jest formatowany i i nie zawiera przeklejki formatowania.

 

Ogólnie polecam stosować funkcję ddd($var); ponieważ zawsze możesz sprawdzić jaki typ danych otrzymałeś i jak się do nich dobrać :)

Edited by hakeryk2 (see edit history)
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...