Phoca Cart Modul - getTotal

Rudolf
23. pro 2020 03:51 - 23. pro 2020 04:32 #143425
<?php echo $cart->getCartCountItems(); ?>

se mění dynamicky pomocí ajaxu

Jak změním dynamicky po přidání do košíku také hodnotu celkové ceny?
$total	= $cart->getTotal();
$total	= $total[0]['brutto'];
$price	= new PhocacartPrice();

echo $price->getPriceFormat($total);

Zkoušel jsem to dát do <div id="phItemCartBoxTotal">, ale nebere to.
Potřeboval bych najít kde se ten ajax provádí aby se mi ajaxem měnila i celková cena v template modulu Cart.

P.S.
Asi to bude v controlleru checkout.json.php ve funkci add....

P.S.2
Proč to vůbcc vzniko:
Zkoušel jsem samozřejmě jako první zobrazit
<div id="phItemCartBoxTotal"><?php echo $cart->getCartTotalItems(); ?></div>

Ale to mi hlásí chybu:
Notice: Array to string conversion in templates/moje_sablona/html/mod_phocacart_cart/default.php on line 18

MiniJoomla! - www.minijoomla.org - eshop s rozšířením Joomla/VM
Email Manager - aplikace na správu šablon emailů pro VirtueMart
Easy Feeder - aplikace na generování XML/CSV feedů a napojení na ERP pro VM
PragueClassicconcert - portál pro prodej vstupenek na systému Joomla

Pro možnost přispívání do fóra je nutné: Přihlásit se nebo Vytvořit účet.

Odpověď od H13
23. pro 2020 21:57 - 23. pro 2020 22:09 #143436
Ahoj, dívám se tam a jsou tam ještě zastaralý informace v komentářích

Tohle je OK

$total = $cart->getTotal();
$total = $total[0];
$price = new PhocacartPrice();

echo $price->getPriceFormat($total);


u $cart->getCartTotalItems(); dostaneš
Notice: Array to string conversion in templates/moje_sablona/html/mod_phocacart_cart/default.php on line 18

protože je to pole a je tam kompletní kalkulace, tedy:

- total základní
- total po věrnostních bodech
- total po slevách na produkty
- total po slevách na celý košík
- total po kupónech

úplně konečnej total je vždy v poli 0 (pro případné budoucí rozšíření se může pole rozšiřovat, takže poslední total je 0, aby už navždy nebyl změněnej)

A teď k tomu hlavnímu, k AJAXu, v komentářích ještě zůstala stará informace o ID, ID se změnilo kvůli možnosti mít více instancí na stránce na třídu, tedy dynamicky změněnej total se pak načítá do:
<div class="phItemCartBoxTotal"></div>

nikoliv do:
<div id="phItemCartBoxTotal"></div>

Tady ale v kontextu s tvým předchozím příspěvkem ale narazíme na problém, protože total příjde z ajaxu a tedy nedá se jeho formát nastavit v template override.

Možnost by byla udělat template override pro total, ale to už by byla celkem hodně komplikovaná záležitost (z hlediska přehlednosti).

Phoca Gallery - http://www.phoca.cz/phocagallery - obrázková galerie (Joomla!)
Phoca Guestbook - http://www.phoca.cz/phocaguestbook - kniha návštěv (Joomla!)
Phoca Download - http://www.phoca.cz/phocadownload - stahování souborů (Joomla!)
Phoca Cart - http://www.phoca.cz/phocacart - e-shop,...
Poděkovali: Rudolf

Pro možnost přispívání do fóra je nutné: Přihlásit se nebo Vytvořit účet.

Odpověď od Rudolf
23. pro 2020 22:31 #143437
Super, díky...

Tady ale v kontextu s tvým předchozím příspěvkem ale narazíme na problém, protože total příjde z ajaxu a tedy nedá se jeho formát nastavit v template override.


Takže moje prosba o přidání nového parametru pro počet desetinných míst ve funkci getPriceFormat dostává nový rozměr :)

MiniJoomla! - www.minijoomla.org - eshop s rozšířením Joomla/VM
Email Manager - aplikace na správu šablon emailů pro VirtueMart
Easy Feeder - aplikace na generování XML/CSV feedů a napojení na ERP pro VM
PragueClassicconcert - portál pro prodej vstupenek na systému Joomla

Pro možnost přispívání do fóra je nutné: Přihlásit se nebo Vytvořit účet.

Odpověď od H13
23. pro 2020 23:52 - 23. pro 2020 23:59 #143440

Takže moje prosba o přidání nového parametru pro počet desetinných míst ve funkci getPriceFormat dostává nový rozměr


Ono to není přímo v té funkci.

Takhle to fungovovalo:

1) při inicializaci proměnné $price (new PhocacartPrice) se načetlo nastavení z měny, mimo jiné i o počtu desetinný míst
2) pak s provedl ten formát přes gePriceFormat

ve 3.5.5 jsem přidal settery, takže mezi 1) a 2) můžeš vstoupit pomocí setteru, např. setPriceDecimals a toto změnit.

Toto můžež např. udělat v template override pro košík, jenže tady se bavíme o AJAXU, kterej zpět posílá počet položek a výslednou celkovou částku a tyto dvě položky nemají override (protože se v podstatě jedná jen o dvě čísla):



jen pro zajímavost:
count: počet položek v košíku
item: ajaxem dynamicky změněný košík (lze změnit přes template override)
popup: ajaxem dynamicky vytvořený popup (lze změint přes template override)
status: informace o provedení ajaxu
total: celková částka (nezle změnit v template override)


Tedy, v tvém případě, pokud v košíku nechceš desetinné čárky, pak si to přes template override změníš (viz www.joomlaportal.cz/forum/phoca-cart/123...etpriceformat#143435 ) a budeš mít částky bez desetinné čárky, ale celkovou částku, kterou dostaneš ajaxem, pak nezměníš, ta override nemá - takže ti příjde částka z ajaxu s desetinnejma čárkama (ale nemyslím do celýho košíku, jen do <div class="phItemCartBoxTotal"></div>).

Řešením by mohlo být vytvoření layoutu:

cart_total.php

kterej by se renderoval to ajax requestu, tím pádem by jsi mohl i ovlivnit částku, která se dynamicky mění ajaxem

Phoca Gallery - http://www.phoca.cz/phocagallery - obrázková galerie (Joomla!)
Phoca Guestbook - http://www.phoca.cz/phocaguestbook - kniha návštěv (Joomla!)
Phoca Download - http://www.phoca.cz/phocadownload - stahování souborů (Joomla!)
Phoca Cart - http://www.phoca.cz/phocacart - e-shop,...

Pro možnost přispívání do fóra je nutné: Přihlásit se nebo Vytvořit účet.

Odpověď od H13
24. pro 2020 00:37 #143441
Aby jsme to neprotahovali, ve verzi 3.5.5 stable přibude novej layout soubor: cart_total.php
defined('_JEXEC') or die();
$d 		= $displayData;
$price	= new PhocacartPrice();

if (isset($d['total'][0]['brutto'])) {
	echo $price->getPriceFormat($d['total'][0]['brutto']);
}

Takže v tvým případě stejně jako obsah košíku budeš moct přepsat in částku total v ajaxu:
defined('_JEXEC') or die();
$d 		= $displayData;
$price	= new PhocacartPrice();
$price->setPriceDecimals(0);
if (isset($d['total'][0]['brutto'])) {
	echo $price->getPriceFormat($d['total'][0]['brutto']);
}

Phoca Gallery - http://www.phoca.cz/phocagallery - obrázková galerie (Joomla!)
Phoca Guestbook - http://www.phoca.cz/phocaguestbook - kniha návštěv (Joomla!)
Phoca Download - http://www.phoca.cz/phocadownload - stahování souborů (Joomla!)
Phoca Cart - http://www.phoca.cz/phocacart - e-shop,...
Poděkovali: Rudolf

Pro možnost přispívání do fóra je nutné: Přihlásit se nebo Vytvořit účet.