| 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 |
#2 · Zasláno: 16. 3. 2013, 14:31:08
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 |
#3 · Zasláno: 16. 3. 2013, 17:42:14
Tori:
Připojit se k db a vypsat z ní nějaká data. |
||
| Tori Profil |
#4 · Zasláno: 16. 3. 2013, 18:17:46
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 |
#5 · Zasláno: 16. 3. 2013, 18:34:48
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 |
#6 · Zasláno: 16. 3. 2013, 19:13:50
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 |
#7 · Zasláno: 16. 3. 2013, 19:55:37
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 |
#8 · Zasláno: 16. 3. 2013, 20:23:01
Martin02:
Kde to chcete použít? |
||
| Martin02 Profil |
#9 · Zasláno: 16. 3. 2013, 20:37:07
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 |
#10 · Zasláno: 16. 3. 2013, 21:49:21
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 |
#11 · Zasláno: 17. 3. 2013, 08:53:12
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 |
#12 · Zasláno: 17. 3. 2013, 09:49:26
Martin02:
A co je to za stránku? |
||
| Martin02 Profil |
#13 · Zasláno: 17. 3. 2013, 11:55:38
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 |
#15 · Zasláno: 17. 3. 2013, 15:45:29
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 |
#17 · Zasláno: 17. 3. 2013, 19:46:51 · Upravil/a: Martin02
Žá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 |
||
|
Časová prodleva: 13 let
|
|||
0