Autor | Zpráva | ||
---|---|---|---|
drotik Profil * |
#1 · Zasláno: 31. 10. 2010, 23:40:39
Som php totálny začiatočník a potrebujem pomoc s jednou funkciou stranky:
Mam rozrobenú stránku v jednoduchom CMS a potrebujem, aby sa mi menila šablóna (*.tpl) podľa toho, do akej kategórie patrí článok... Súčasný kód: $tpl->define(array(main => "main.tpl")) Tabuľka databázy so stĺpcom pre id článku a id kategorie článku: CREATE TABLE `com_article` ( `i_id_article` int(11) default NULL, `i_id_category` int(11) NOT NULL default '0', Konkrétna požiadavka na kód: - ak je článok xy z kategórie 1, použi šablónu 1.tpl - ak je článok xy z kategórie 2, použi šablónu 2.tpl - ak je článok xy z ostatných kategórii, použi šablónu main.tpl Malo by to byť niečo na spôsob: select i_id_category from com_article where ... + php kódik Vopred vdaka |
||
Tori Profil |
#2 · Zasláno: 1. 11. 2010, 03:30:03
// $row = data vrácená tím vaším selectem $samostatne = array(1,2); // seznam kategorií, které mají stejnojmennou šablonu $soubor = (in_array($row['i_id_category'],$samostatne)) ? $row['i_id_category'] : 'main'; $tpl->define(array(main => "$soubor.tpl")); |
||
drotik Profil * |
#3 · Zasláno: 1. 11. 2010, 11:55:59
Vďaka Tori:
len sa v tom trochu nevyznám, +- som pochopil 1 a 2 riadok, ale 3. veľmi nechápem. Vystihuje ten kód to, že špeciálne šablóny sa majú použiť iba pre kategóriu 1 (1.tpl) a kategóriu 2 (2.tpl) zvlášť a pre všetky ostatné kategórie platí základná: main.tpl ??? |
||
Tori Profil |
#4 · Zasláno: 1. 11. 2010, 12:08:28 · Upravil/a: Tori
drotik:
Ano. Pokud je ID kategorie v tom poli, tak se zároveň použije jako název šablony (hledejte "ternární operátor", je to zkrácený zápis podmínky if/else), jinak se použije jako název šablony 'main'. |
||
drotik Profil * |
#5 · Zasláno: 1. 11. 2010, 22:01:58
Tori:
Vďaka za vysvetlenie. Niečo som si aj pozisťoval o tomto zapise a vyzera to byt OK. Vytvoril som špecialnu šablónu: 1.tpl pre kategoriu1 ALE: + na stranke sa aj cez tento "komplikovany" zapis nadalej zobrazuje sablona main.tpl, - aj pri článkoch z kategórie1 sa zobrazuje main.tpl a nie 1.tpl Problém: - podľa mňa stránka nerozoznáva kategórie článkov podľa tohto zápisu... |
||
AM_ Profil |
#6 · Zasláno: 1. 11. 2010, 22:41:05
drotik:
„array(main => "$soubor.tpl")“ main je nějaká konstanta? nemělo by to být 'main' ? zapni si chybové hlášky včetně úrovně E_NOTICE, pomůže to i s jinými potenciálními problémy v programu. jinak toriho kód funguje, pokud ne, zkus zjistit sám, proč ne (co se uloží do $soubor.php, co je v $row['i_id_category'] a zda se tato položka opravdu vyskytuje v poli $samostatne). Ten "složitý" zápis je (jediný) ternární operátor - podmínka. $a = podminka ? vyraz1 : vyraz2; je totéž jako if (podminka) { $a = vyraz1; } else { $a = vyraz2; |
||
Časová prodleva: 13 let
|
0