Prosím o pomoc, jak v tpl souboru vložím hodnotu uloženou v <span class="neco"> do promenne $neco?
Děkuji
Dělá se to přesně naopak. Nevytahuješ nic ze šablony, ale definuješ data, která jdou do šablony.
A šablonovacích sytému je spousta, podívej se do dokumentace toho tvého. Třeba ve Smarty (jeden z populárních, který používá příponu tpl) by to bylo bylo takhle:
.php:
$smarty->assign('promenna', 'hodnota');
.tpl:
<span class="{$promenna}">
Pokud se nespokojis s odpovedi, zkus uvest neco vice o tvem system, programu. A informace, co chces vlastne udelat a proc.
Priponu TPL pouziva asi 1000 programu. Ohledne webu mozna 100. Pri trose stesti se to da zuzit skutecne na nejaky renderovaci system, ale tech jsou stovky.
Otazkou je, zda potrebujes dostat promenou z php do sablony tpl (text). A nebo opacne. Opacne je to nesmysl. Sablona je plain text. Ledaze bys chtel dostat promenou ze stranky. To by se mohlo jednat o prenos pomoci js ajax nebo prenos pomoci formular, odkaz a nebo html/xml/text parser (php file_get_content + xml parser).
Děkuji za rady.
Jedna se o e-shop a php soubor s příponou tpl. Pokud napíšu <span class="ajax_block_products_total">, vypíše se mi na stránce hodnota zboží v košíku bez dopravného. A já bych chtěl, aby se na stránce odpočitavala částka pro dopravné zdarma (Nakupte ještě za x Kč a dopravu budete mít zdarma). Výpočet asi takto nějak stručně: $dopravazdarma=1000-"ajax_block_products_total"
Samozřejmě by to ještě bylo ošetřeno podmínkou, že pokud hodnota zboží překročí hranici dopravného zdarma, odpočet se nebude zobrazovat.
A mohli byste mi prosím poradit, jak bych měl upravit tento kód, aby to fungovalo? Tzn. aby se z 1000 Kč odečetla hodnota zboží v košíku a zobrazila se chybějící částka do dopravného zdarma....
<span class="ajax_block_products_total">
{if $cart_qties > 0}
{convertPrice price=1000-$cart->getOrderTotal(false, Cart::ONLY_PRODUCTS)}
{/if}
</span>
Takže je to Smarty a PrestaShop 1.6.
Tak hlavně to nebudeš počítat v šabloně a se zadrátovanou tisícovkou.
Pak tam nebudeš mít class, kterým se ti to přesmahne celkovou částkou.
A nakonec to vypadá, že už tam pro to podpora je, takže nemusíš nic vymýšlet.
<span class="freeshipping{if $free_shipping == 0} unvisible{/if}">
{l s='Do dopravneho zdarma zbyva' mod='blockcart'}
<span class="ajax_cart_free_shipping">{$free_shipping}</span>
</span>
Děkuji za radu. JJ, prestashop 1.6. Bohužel v ní ale nemůžu mít nastaveno stejnou částku dopravného zdarma pro všechny dopravce. Tzn. že freeshipping je 0. Pokud tam zadám tento kód (bez podmínky), stejně se nic nezobrazí (ani popisek):
<span class="freeshipping"> {l s='Do dopravneho zdarma zbyva' mod='blockcart'} <span class="ajax_cart_free_shipping">{$free_shipping}</span> </span>
Vím, že je to amaterské, ale nemám problém zadat hodnotu dopravného zdarma (1000) přímo do kódu. Pokud by se v budoucnu měnil, vím, kde všude to mám v kódu opravit:-) Potřeboval bych proto upravit tento kód, aby to fungovalo:
<span class="ajax_block_products_total">
{if $cart_qties > 0}
{convertPrice price=1000-$cart->getOrderTotal(false, Cart::ONLY_PRODUCTS)}
{/if}
</span>
Tady se nastavují proměnné.
[prestashop_1.6.1.20_0/modules/blockcart/blockcart.php]
$total_free_shipping = 0;
if ($free_shipping = Tools::convertPrice(floatval(Configuration::get('PS_SHIPPING_FREE_PRICE')), $currency))
{
...
$this->smarty->assign(array(
...
'free_shipping' => $total_free_shipping
...
Tady je HTML šablona.
[prestashop_1.6.1.20_0/themes/default-bootstrap/modules/blockcart/blockcart.tpl]
co chceš
...
Tady je JSON šablona pro AJAX.
[prestashop_1.6.1.20_0/themes/default-bootstrap/modules/blockcart/blockcart-json.tpl]
"freeShipping": {displayWtPrice|json_encode p=$free_shipping},
"freeShippingFloat": {$free_shipping|json_encode},
...
A tady se to dynamicky aktualizuje.
[prestashop_1.6.1.20_0/themes/default-bootstrap/js/modules/blockcart/ajax-cart.js]
if (parseFloat(jsonData.freeShippingFloat) > 0)
{
$('.ajax_cart_free_shipping').html(jsonData.freeShipping);
$('.freeshipping').fadeIn(0);
...
To stačí na to, abys tam doplnil cokoliv. Ve tvém případě bude stačit upravit výpočet $total_free_shipping (samozřejmě podle nastavení a ne natvrdo) a doplnit to do šablony.
20 minut včetně večeře a pohádky s neteří.
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku