Autor Zpráva
drotik
Profil *
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
 // $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 *
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
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 *
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
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;

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: