Přihlásit se

Košík - motivator k nákupu

16. lis 2018 09:41 #137735
Odpověď od marvays
Uživatel

Rudolf Baláš napsal: a ajaxová komponenta Free shipping info


Máte link na tu komponentu? Na forek VMnet mi toho vyskakuje mraky a vždy se to tváří jako balík něčeho. nepoznám, kterou máte na mysli.

16. lis 2018 09:58 #137736
Odpověď od Ernst
Joomla Expert
Ahoj Rudo, máš pravdu, pokud je v konfiguraci vm zapanutý ajaxový košík, tak se to bude chovat špatně (zaktualizuje se cena a ne ten text).
Já si tu možnost ajaxu v košíku neuvědomil.

musí se do default.php v přepisu košíku v šablone doplnit js, který ten text taky aktualizuje.

16. lis 2018 11:32 #137740
Odpověď od Ernst
Joomla Expert
Marvays napsal

hned na startu to přeskočí první podmínku. i když jsem změnil podmínku na ==0 tak ji přeskočí a zobrazí podmínku druhou. Tuhle dopdmínku to ale počítá zvláštně. Pokud mám prázdný košík, tak bych měl mít výzvu na přidání do košíku za 5000,-. Místo toho mi to počítá na 4905 a někde se nám zatoulalo 95 kaček. Možná by pomohlo změnit druhou podmínku na větší než 0 a menší než 5000,-

sorry jako, ta podmínka musí být <?php if ($celkem <= 0) { ?> místo <?php if ($celkem = 0) { ?> , to jsem přehlédl. Musí to tak být, protože $celkem je typu float.

Ten ajax není zas tak složitý uvede variantu pro něj, která bude fungovat i při vypnutém ajax, takže pro obojí jedno řešení.

musí se změnit /modules/mod_virtuemart_cart/assets/js/update_cart.js.
ten ale není chráněn při upgrade VM, takže by jsi ho musel znovu měnit po každém upgrade.
Nejsem v JS tak zběhlý, abych věděl jak js umístit do souboru default.php v přepisu modulu košíku v šabloně.

Pokud mi zde někdo poradí, budu velmi rád.

16. lis 2018 13:29 #137746
Odpověď od marvays
Uživatel
Už to počítá správně, je to blbne při prázdném košíku.
[img

16. lis 2018 15:17 #137752
Odpověď od Ernst
Joomla Expert
Já už to předělal i pro ten ajax a některé chyby jsem při testu opravil.
Ještě to otestuji a pak zde uveřejním, asi večer

16. lis 2018 15:43 #137754
Odpověď od marvays
Uživatel

Ernst napsal: Já už to předělal i pro ten ajax a některé chyby jsem při testu opravil.
Ještě to otestuji a pak zde uveřejním, asi večer


To abych ti večer klepnul husu. Nebo raději králíka? :)

16. lis 2018 19:39 - 16. lis 2018 19:41 #137759
Odpověď od Ernst
Joomla Expert
tak takhle:
1. do přepisu modulu košíku v šabloně - /templates/xxxxxx/html/mod_virtuemart_cart/default.php si doplnit
Code:
<?php $celkem = floatval(preg_replace(array("/[^0-9,.]/","/[.,]/"), array("","."), $data->billTotal)); ?> <span class="motivator"> <?php if ($celkem <= 0.0001) { ?> <span class="zmenatextu" style="animation: blinker 2s linear infinite;">Při objednávce nad 5000,- je doprava zdarma!</span> <?php } elseif ($celkem < 5000) { ?> <span class="zmenatextu" style="animation: blinker 2s linear infinite;">Chcete dopravu zdarma? Přidejte ještě zboží za: <?php echo (5000 - ($celkem)) ?> Kč</span> <?php } else { ?> <span class="zmenatextu" style="font-weight: 700; color: #109d16;">Vaše objednávka bude dopravena zdarma!</span> <?php } ?> </span>
do míst, kde to chcete zobrazit, většinou za
Code:
<a class="total" data-toggle="dropdown" href="#"><span class="hidden-xs totalcart"><?php if ($data->totalProduct and $show_price and $currencyDisplay->_priceConfig['salesPrice'][0]) { ?> <?php echo $data->billTotal; ?> <?php } ?></span></a>

pak do /modules/mod_virtuemart_cart/assets/js/update_cart.js
dát místo
Code:
$(module).find(".show_cart").html( datas.cart_show); $(module).find(".total_products").html( datas.totalProductTxt); $(module).find(".total").html( datas.billTotal);
Code:
$(module).find(".show_cart").html( datas.cart_show); $(module).find(".total_products").html( datas.totalProductTxt); $(module).find(".total").html( datas.billTotal); var hodnota = datas.billTotal; var celkem = hodnota.replace(/[^0-9,.]/g,""); celkem = celkem.replace(/[,.]/g,"."); if (celkem.length=0) {celkem=0} else {parseFloat(celkem);} if (celkem <= 0.0001) { mujtext='Při objednávce nad 5000,- je doprava zdarma!';} else if (celkem < 5000) { mujtext= ('Chcete dopravu zdarma? Přidejte ještě zboží za: ' + (5000 - celkem) + ' Kč');} else { mujtext= ( 'Vaše objednávka bude dopravena zdarma!');} $(module).find(".zmenatextu").html(mujtext);
nevýhodou je, že změny v /modules/mod_virtuemart_cart/assets/js/update_cart.js se přepíšou při reinstalaci nebo upgrade. Proto pak musíte změnit ten kód znovu.
Možná někdo ví jak to udělat jinak, aby se ten js doplnil do /templates/xxxxxx/html/mod_virtuemart_cart/default.php, já bohužel ne, a uvítam každou radu, jestli to jde.

Také by se ještě měly ty texty "natvrdo" dát do jazykových proměnných.

16. lis 2018 20:04 #137760
Odpověď od marvays
Uživatel

Ernst napsal: tak takhle:
nevýhodou je, že změny v /modules/mod_virtuemart_cart/assets/js/update_cart.js se přepíšou při reinstalaci nebo upgrade.


No, já na VMko už několik let používám template od Flexiblewebdesign. Sice drahá záležitost, ale mi se líbí. Ti dělají aktualizaci jednou za půl roku a to jen když se vyskytně nějaký konflikt s novou verzí VM. Košík mají řešený vlastním modulem. Takže kod vložim do flexible_update_cart.js a můžu aktualizovat VMko jak chcu :)

Hned ráno to zkusím vložit na web a dám vědět.

16. lis 2018 21:06 - 16. lis 2018 21:08 #137761
Odpověď od Ernst
Joomla Expert
deju vědět, já to tedy testoval, ale kdyby něco.

na vlastním modulu a js šablony jsem to testovat nemohl, tak si to v nejhorším uprav

PS huse a králíkovi dej milost :lol:

17. lis 2018 00:24 - 17. lis 2018 00:26 #137764
Odpověď od Ernst
Joomla Expert
Ještě jsem se hecnul a udělal to i těmi jazykovými proměnnými. A navíc díky Houbákovi to je udělaný tak, že se po upgrade nebo reinstalaci virtuemart nemusí nic opravovat.

/templates/xxxxxx/html/mod_virtuemart_cart/default.php si doplnit
Code:
<?php vmJsApi::removeJScript("/modules/mod_virtuemart_cart/assets/js/update_cart.js"); vmJsApi::addJScript("/modules/mod_virtuemart_cart/assets/js/update_cart_new.js",false,false); JText::script('MYCART_PRIDEJ'); JText::script('MYCART_NAD_5000'); JText::script('MYCART_MENA'); JText::script('MYCART_ZDARMA'); $celkem = floatval(preg_replace(array("/[^0-9,.]/","/[.,]/"), array("","."), $data->billTotal)); ?> <span class="motivator"> <?php if ($celkem <= 0.0001) { ?> <span class="zmenatextu" style="animation: blinker 2s linear infinite;"><?php echo JText::_( 'MYCART_NAD_5000'); ?></span> <?php } elseif ($celkem < 5000) { ?> <span class="zmenatextu" style="animation: blinker 2s linear infinite;"><?php echo JText::_( 'MYCART_PRIDEJ') .' '. (5000 - ($celkem)).' '.JText::_( 'MYCART_MENA') ?> </span> <?php } else { ?> <span class="zmenatextu" style="font-weight: 700; color: #109d16;"><?php echo JText::_( 'MYCART_ZDARMA'); ?></span> <?php } ?> </span>
Kód
Code:
vmJsApi::removeJScript("/modules/mod_virtuemart_cart/assets/js/update_cart.js"); vmJsApi::addJScript("/modules/mod_virtuemart_cart/assets/js/update_cart_new.js",false,false);
zajistí že se nepracuje s update_cart.js ale s update_cart_new.js, která se nepřepíše.
Navíc ji můžete dát třeba do šablony /templates/xxxxxx/html/mod_virtuemart_cart/ nebo někam do /media

V /modules/mod_virtuemart_cart/assets/js/ si vytvořte kopii update_cart.js a nazvěte ji update_cart_new.js.
Tu pak upravte:
Code:
$(module).find(".show_cart").html( datas.cart_show); $(module).find(".total_products").html( datas.totalProductTxt); $(module).find(".total").html( datas.billTotal); var hodnota = datas.billTotal; var celkem = hodnota.replace(/[^0-9,.]/g,""); celkem = celkem.replace(/[,.]/g,"."); if (celkem.length=0) {celkem=0} else {parseFloat(celkem);} if (celkem <= 0.0001) { mujtext = Joomla.JText._( 'MYCART_NAD_5000');} else if (celkem < 5000) { mujtext= (Joomla.JText._( 'MYCART_PRIDEJ') + ' ' + (5000 - celkem) + ' ' + Joomla.JText._( 'MYCART_MENA'));} else { mujtext= ( Joomla.JText._( 'MYCART_ZDARMA'));} $(module).find(".zmenatextu").html(mujtext);
Ještě si doplňte do /ernst2.8u.cz/web/language/overrides/cs-CZ.override.ini a en-GB.override.ini
Code:
MYCART_ZDARMA="Vaše objednávka bude dopravena zdarma!" MYCART_MENA="Kč" MYCART_PRIDEJ="Chcete dopravu zdarma? Přidejte ještě zboží za:" MYCART_NAD_5000="Při objednávce nad 5000,- je doprava zdarma!"
texty si samozřejmě zadejte dle sebe a případně i v dalších jazykových mutacích.

Tím to je řešení konečné a univerzální, odolné vůči upgradům.

17. lis 2018 01:59 #137766
Odpověď od Rudolf
Joomla Expert
Tak vidíte, konečně to začíná mít hlavu a patu :)

Co se týká komponenty a modulu, vycházeli jsme od konceptu firmy idealconception.com pro J1.5 a 2.5, bohužel tento web již není dostupný. Ve verzi pro J1.5 to bylo bez ajaxu, ve verzi pro J25 to již obsahovalo Ajax.

Každopádně to řešení jsme přeprogramovali do J3 a zůstalo nám.

A máte to hezky vyřešené, ještě vám chybí administrace pro nastavení jazykových konstant pro každý jazyk (language file Vám nepomůže, u multijazyčného a multiměnového eshopu musíte zajistit závislost země, jazyku a měny, která ve VM není)

Prostě máte pochvalu a pro první a pro použití natvrdo to stačí.
Pro automatické nasazování na eshopy to chce dopilovat, odladit v případě že používáte OPC a je třeba vyřešit konflikty v ajaxu s OPC a další, ale už jenom drobné úpravy :)


Řeknu Václavovi, že mu tady vzniká konkurence v programování :)

MiniJoomla! - www.minijoomla.cz - 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

17. lis 2018 03:29 #137768
Odpověď od marvays
Uživatel
Tak jsem to nainstaloval. Nejsem si jistý, jestli to funguje přesně tak, jak si zamýšlel. Hodim ti do mailu odkaz na vyzkoušení.

17. lis 2018 10:04 - 18. lis 2018 20:14 #137770
Odpověď od Ernst
Joomla Expert

Rudolf Baláš napsal: Tak vidíte, konečně to začíná mít hlavu a patu :)

Prostě máte pochvalu a pro první a pro použití natvrdo to stačí.
Pro automatické nasazování na eshopy to chce dopilovat, odladit v případě že používáte OPC a je třeba vyřešit konflikty v ajaxu s OPC a další, ale už jenom drobné úpravy :)

Řeknu Václavovi, že mu tady vzniká konkurence v programování :)

Díky za pochvalu, ale konkurence nikomu nevzniká v js jsem spíše začátečník.

S OPC to běhá a nemá to žádný konflikt, testoval jsem.

A máte to hezky vyřešené, ještě vám chybí administrace pro nastavení jazykových konstant pro každý jazyk (language file Vám nepomůže, u multijazyčného a multiměnového eshopu musíte zajistit závislost země, jazyku a měny, která ve VM není)

To je mi jasný, ale v týhle fázi to řešit nechci. Je to míněno pro vícejazyčný web ne pro multiměnový VM.

Měním teď prochu program a prvně napíšu článek o motivátoru, pak o CSS :)
Pokud má někdo zájem, hodil jsem řešení na jeden svůj testovací web, pozor není eshop nijak stylizován a doladěn, je to jen pro ilustraci toho košíku - vmmotivator.8u.cz/index.php/eshop
Poděkovali: Linelabcz

18. lis 2018 10:01 #137774
Odpověď od Linelabcz
Admin
Díky za skvělý článek Ernste a návod, jak přidat zajímavou funkci do Virtuemart. :)

18. lis 2018 15:55 - 18. lis 2018 15:55 #137780
Odpověď od Ernst
Joomla Expert
mám prosbu na admina. Pro testování je to teď na vmmotivator.8u.cz/index.php/eshop

můžeš mi to v tom předchozím příspěvku změnit?

Powered by Fórum