Přihlásit se

Košík - motivator k nákupu

16. lis 2018 02:37 #137731
Odpověď od Cony
Moderátor

Rudolf Baláš napsal: - od té doby co to má alza a zákazníci to chtějí taky

Jinak mi vyhrožují jinými systémy :D


:cheer: Jéjej to znám - "Dyť to má alza (mall, facebook, google, amazon), to jen okopírujete" :P

16. lis 2018 04:27 - 16. lis 2018 04:29 #137732
Odpověď od Rudolf
Joomla Expert
Kdyby byl Max co k čemu a nevymýšlel již 3 roky přechod virtuemartu na wordpress, kde mu pšenka stejně nepokvete, tak to má v základu.

Ale nebuďte smutný, až rozjedeme portal minijoomla.org tak tam najdete všechny doplňky z portalu EasyJoomla.org v nové verzi a plus nové verze od nás včetně toho Free Shipping info.

Pak si to můžete koupit za mrzký peníz pokud to budete chtít :)

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

16. lis 2018 09:37 #137734
Odpověď od marvays
Uživatel

Ernst napsal: tak jsem se na vyžádání ještě podíval na ten kód do modulu košík:

takže celý kód bude vypadat například:

Code:
<div class="motivator"> <?php $celkem = floatval(preg_replace(array("/[^0-9,.]/","/[.,]/"), array("","."), $data->billTotal)) ?> <?php if ($celkem = 0) { ?> <span style="animation: blinker 2s linear infinite;">Při objednávce nad 5000,- je doprava zdarma!</span> <?php } elseif ($celkem < 5000) { ?> <span style="animation: blinker 2s linear infinite;">Chcete dopravu zdarma? Přidejte ještě zboží za: <?php echo (5000 - ($celkem)) ?>,-</span> <?php } else { ?> <span style="font-weight: 700; color: #109d16;">Vaše objednávka bude dopravena zdarma!</span> <?php } ?> </div>


Vyzkoušeno. posunuli jsme se hodně dopředu. Ale . . .

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,-

třetí podmínka vypadá dobře.

ajax by byl luxus, takhle musím pořešit, aby se mi nenačítal košík do cache.

Třetí podmínka funguje správně.

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

Powered by Fórum