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

Martens
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.

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

Odpověď od H13
12. dub 2020 18:49 - 12. dub 2020 18:59 #142123
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:
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
.' WHERE a.exchange_rate = 1'
se zamění za jinou podmínku, např:
.' 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 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: Martens

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

Odpověď od Martens
12. dub 2020 18:57 - 12. dub 2020 19:07 #142124
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

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

Odpověď od H13
12. dub 2020 19:25 - 12. dub 2020 19:46 #142125
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:

// 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:

$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 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
12. dub 2020 19:34 - 12. dub 2020 19:48 #142126
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 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: Martens

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