Autor Zpráva
Martin02
Profil
Ahoj,

používám prestashop, který používá šablonovací systém Smarty. Potřebuju zprovoznit příkaz {php} - abych tam mohl vkládat php kód a nevím jak. Píše mi to, že mám nějak povolit SmartyBC. Trochu jsem googlil a našel jsem, že to musím zapnout přes $smarty = new SmartyBC();. Ale když se podívám do konfiguračního souboru pro Smarty, je tam $smarty = new Smarty(); a za tím nějaké definování různých parametrů. Jak mám tedy zapnout to SmartyBC?


Děkuji
Tori
Profil
Martin02:
Je lepší si ta data načíst v kontroleru / modulu a do šablony je jen předat jako běžnou proměnnou. Značka {php} by se neměla používat, od toho právě jsou šablony, aby oddělily nějakou aplikační logiku a čtení dat od zobrazení dat.

Co vlastně chcete udělat?
Martin02
Profil
Tori:
Připojit se k db a vypsat z ní nějaká data.
Tori
Profil
Rozhodně mimo šablonu. Jestli potřebujete předávat nějaké parametry (ID apod.), buď si zaregistrujte příslušnou metodu jako Smarty funkci, nebo jestli čtete parametry jen z URL, tak je zjistěte v kontroleru/modulu - metoda Tools::getValue('název klíče v REQUEST', $vychoziHodnota = false).
Martin02
Profil
Tori:
Když se na té odkazované stránce podívám na ten první php kód. Kam ho mám dát? A jak potom tu funkci zavolat? Jen pomocí {date_now}?
Tori
Profil
Do kontroleru/modulu si přidáte metodu, která se bude volat ze šablony (to je ta fce print_current_date z příkladu). Registraci funkce do Smarty dáte např. do konstruktoru kontroleru/modulu. (Jestli ji potřebujete jen na jedné stránce/šabloně, tak může být i někde jinde, podle toho, kde se to mám zobrazovat. V Back office by mohla registrace být i v [NázevVašehoModulu]AdminController::init(), Front office nevim, nezkoumala jsem.) A ano, v šabloně jen takto. Zkuste si to. :)
Martin02
Profil
Asi nejsem tak zdatný, jak si myslíš.

Do kontroleru/modulu si přidáte metodu
To je kde?

Registraci funkce do Smarty dáte např. do konstruktoru kontroleru/modulu.
A to je kde?
Tori
Profil
Martin02:
Kde to chcete použít?
Martin02
Profil
Tori:
Jak to myslíš, kde to chci použít? Používám PrestaShop. Je tam soubor, kde se používá Smarty a tam to chci použít. Dál je mi znám soubor, kde se jakoby definuje to smarty - třeba $smarty = new Smarty();. Ale určitě tam toho bude spousta, bohužel se v tom moc neorientuju.
Tori
Profil
Martin02:
Myslela jsem, jestli to je v administraci obchodu (back office) nebo tam, kde to vidí zákazníci; jaká stránka to je (detail produktu, výpis kategorií, ...) - podle toho by šlo najít, která třída to má na starost a tam potom doplnit to načítání dat z DB. Ale je pravda, že PrestaShop je dost spletitý, takže to někdy docela trvá, najít co dělá co.

Jednodušší, ale pořád čistá možnost je využít ten konfigurák pro Smarty (asi /config/smarty.config.inc.php). Tam si definujete tu funkci pro Smarty, která načte data a vrátí je, a zároveň ji tam můžete i zaregistrovat do Smarty. (Je tam registrováno dost dalších funkcí, inspirace pro vás.) Pro databázové metody viz tenhle návod: DB class best practices, využijete nejspíš metodu executeS().
Martin02
Profil
Tori:
Tak jsem si udělal novou funkci, která to tahá z databáze a funguje.

Teď ale potřebuju zjistit název stránky, podle kterého se budou z db načítat data. Věděl by někdo, jak zjistit název aktuální stránky v PrestaShopu v šabloně - smarty?
Tori
Profil
Martin02:
A co je to za stránku?
Martin02
Profil
Tori:
Výpis produktů
Tori
Profil
Snad by měla URL aktuální stránky být v Smarty proměnné {$request} (v administraci se to bůhvíproč jmenuje {$currentIndex}), jednotlivé parametry přes Tools::getValue() (ale nevím, jak se zpracovávají SEO URL produktů a kde se v tom případě najde to ID). Tady je seznam proměnných, které by měly být v šabloně dostupné vždy.
... možná by bylo lepší to rovnou udělat jako malý modul. Já se orientuju spíš v administraci PS.
Martin02
Profil
Tori:
Díky moc!
To {$request} mi funguje a vlastně všechno mi už funguje :)

Já se orientuju spíš v administraci PS.
Jestli tím myslíš i v její úpravě, mohla bys mi ještě poradit, jak vytvořit novou stránku? Jako samotnou stránku dokážu vytvořit (už si to přesně nepamatuju, ale někde se to tam nastavuje), ale jde mi o její obsah - nikde jsem nenašel něco, čím bych určoval její obsah. Dobré by bylo, kdybych do ní mohl vložit nějaký soubor.
Tori
Profil
Stránku čeho? Nějaký modul do administrace?
↓: Jo takhle, tak to bohužel nevím.
Martin02
Profil
Žádný modul. Prázdnou stránku, do které se vloží určený kód. S ostatní administrací a vlastně s celým photoshopem to nebude mít nic společného, krom toho, že to bude v jeho administraci.


Tori:
Nevadí. Přesto díky moc

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: