Přihlásit se

Joomla 5.1.0 a Joomla 4.4.4 (17 dub 2024)

Dnes byla uvolněna nová verze Joomla 5.1.0, společně s Joomla 4.4.4. Tato verze přináší spoustu nových funkcí, vylepšení v oblasti bezpečnosti a kódu a díky těmto vylepšením i vyšší rychlost.

Phoca Cart - nastavení default zobrazení měny ve frontendu

12. dub 2020 17:00 #142122
Ahoj,
řešim u Phoca Cart, jak zaonačit nastavení default zobrazení jiné měny na frontendu, než v jaké se zadávají ceny.

Lze tedy nějak nastavit, aby se ceny v backendu zadávaly v Kč, ale na frontendu se zobrazovalo v EUR a to trvale do případné další změny?

Zatím jsem našel jen možnost nastavení přes Phoca Cart Currency module, ale tam to nedrží hodnotu po uzavření okna a opětovném otevření.

Díky za nakopnutí správným směrem.

12. dub 2020 18:49 - 12. dub 2020 18:59 #142123
Odpověď od H13
Admin
Ahoj, to bude asi trochu oříšek.

Ceny se ukládají jen v defaultní měně. Tedy 100% musí být defaultní měna v administraci. To se nedá nijak změnit. Tedy v Kč.

A teď jde o to jak udělat to, aby se ve frontendu nabízelo EURo a nebylo to v konfliktu s přepínáním měn (aby se nezaměnila defaultní měna za jinou a nezpůsobilo to např. nemožnost přepínání)

Pokud se mění měna v currency module, je to osobní nastavení uživatele přes session, která samožřejmě platí jen pro určitou dobu a určitý prohlížeč.

Momentálně tam prostě taková možnost není.


Asi snad jedině upravit tuto metodu a prostě vybrat jako výchozí jinou měnu:
Code:
public static function getDefaultCurrency() { if(self::$defaultcurrency === false){ $db = JFactory::getDBO(); $query = ' SELECT a.id FROM #__phocacart_currencies AS a' .' WHERE a.exchange_rate = 1' .' ORDER BY a.id'; $db->setQuery($query); $c = $db->loadObject(); if (!empty($c->id)) { self::$defaultcurrency = (int)$c->id; } else { self::$defaultcurrency = false; } } return self::$defaultcurrency; }

kde
Code:
.' WHERE a.exchange_rate = 1'
se zamění za jinou podmínku, např:
Code:
.' WHERE a.id = 2'

Já to teď testuju, vypadá, to, že by to mohlo jet, ale samozřejmě by to chtělo pořádně vše otestovat.

Phoca Cart - www.phoca.cz/phocacart - e-shop, e-commerce
Phoca Gallery - www.phoca.cz/phocagallery - obrázková galerie
Phoca Download - www.phoca.cz/phocadownload - stahování souborů
Phoca Guestbook - www.phoca.cz/phocaguestbook - guestbook
Poděkovali: Martens

12. dub 2020 18:57 - 12. dub 2020 19:07 #142124
Odpověď od Martens
Návštěvník
A co to pořešit tak, že bych si při načtení stránky otestoval existenci cookie s nastavením měny a pokud by neexistovalo cookie, tak bych si vytvořit nové s defaultní hodnotou pro EUR. Tím pádem bych tím simuloval to, že volbu měny určil uživatel.

Teď jde o to, jak se tam cookie ukládá (s jakým názvem a hodnotou)- určitě bych se k tomu dopátral hledáním ve zdrojácích, ale budeš to na 100% vědět rychleji :).

Takhle by to mohlo být řešitelné. Nebo ne? A vyžaduje potom pro změnu i přítomnost modulu Phoca Cart Currency na stránce nebo si načte cookie přímo komponenta?

A ještě k tomu zdrojáku - pokud bych upravil tu metodu v currency.php, tak to ale nebude odolné proti aktualizaci a první update to přepíše zpět. Je to tak?

Jo a pak mi nějak nefungovalo nastavení default měny v administraci - v manuálu se píše, že default měna je tak, která má exchange rate nastavený na 1. S aktuální verzí mi to ale fungovalo jen tak, že default měna v administraci byla ta, která má ID=1. Nebo jsem dělal něco blbě?

Díky

12. dub 2020 19:25 - 12. dub 2020 19:46 #142125
Odpověď od H13
Admin
Ano, výchozí měna je ta, co má exchange rate 1. Pokud je takových měn více, pak je to to s ID č. 1

Teď to zkouším, mám výchozí měnu EUR, změním na výchozí USD:



Ceny nechám stejný:



Pak má dle předpokladů USD cenu jaká je v administraci:



a přepnutím na EUR:



se mění cena podle kurzu.

Sessions - natvrdo nastavit měnu přes session lze takto:

Code:
// otestovat, jestli uz mena neni nastavena, napr uzivatelem $session = JFactory::getSession(); $id = $session->get('currency', 0, 'phocaCart'); // pokud neni, nenastavit vychozi, ale svou if ((int)$id < 1) { //$id = self::getDefaultCurrency(); //$session->set('currency', (int)$id, 'phocaCart'); VYCHOZI $session->set('currency', 2, 'phocaCart');// MNOU ZVOLENA }

nebo:

Code:
$session = JFactory::getSession(); $id = $session->get('currency', 0, 'phocaCart'); // pokud neni, nenastavit vychozi, ale svou if ((int)$id < 1) { $id = 2;// MNOU DEFINOVANA MENA $session->set('currency', (int)$id, 'phocaCart'); }

Phoca Cart - www.phoca.cz/phocacart - e-shop, e-commerce
Phoca Gallery - www.phoca.cz/phocagallery - obrázková galerie
Phoca Download - www.phoca.cz/phocadownload - stahování souborů
Phoca Guestbook - www.phoca.cz/phocaguestbook - guestbook

12. dub 2020 19:34 - 12. dub 2020 19:48 #142126
Odpověď od H13
Admin
Ještě dodám, že pokud manuálně budeš měnit ID u session a testovat to, musíš po každé změně vymazat cache v prohlížeči, protože když se měna nastaví, je nastavena a neprojde tou podmínkou pro úvodní nastavení (už existuje).

A samozřejmě ano, přes session je to mnohem jednodušší, nebude to v konfliktu a můžeš to nastavit např. v šabloně.

Phoca Cart - www.phoca.cz/phocacart - e-shop, e-commerce
Phoca Gallery - www.phoca.cz/phocagallery - obrázková galerie
Phoca Download - www.phoca.cz/phocadownload - stahování souborů
Phoca Guestbook - www.phoca.cz/phocaguestbook - guestbook
Poděkovali: Martens

Powered by Fórum