bboymietek Posted April 6, 2017 Share Posted April 6, 2017 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 More sharing options...
hakeryk2 Posted April 7, 2017 Share Posted April 7, 2017 Utworzyłeś overidy dla Attritbute.php oraz ProductController.php tak jak pisałem w tym poście https://www.prestashop.com/forums/topic/29219-variable-to-display-attribute-price/page-3&do=findComment&comment=2435801? Po ich utworzeniu jeszcze wejdź w w folder cache i usuń class_index.php (zresetuje to override i wgra te nowe). Link to comment Share on other sites More sharing options...
bboymietek Posted April 7, 2017 Author Share Posted April 7, 2017 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 More sharing options...
hakeryk2 Posted April 10, 2017 Share Posted April 10, 2017 (edited) 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 April 10, 2017 by hakeryk2 (see edit history) Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now