Řešení title stránky z jednoho místa
- Tomáš Votruba
- Moderator | 1114
Už mne nebaví lézt do šablon kvůli úpravě title, tak mne napadlo, jestli by nebylo dobré to řešit z jedno místa, tedy v BasePresenter.php něco jako:
// hrubý nástřel
$allTitles = array(
"Homepage" => array(
"default" => "Vítejte u nás",
"detail" => "Prohlídka produktu"
),
// případně i s title pro presenter
"Homepage" => array(
"title" => "Domácí stránka",
"view" => array(
"default" => "Vítejte u nás",
"detail" => "Prohlídka produktu"
)
)
);
// pro Homepage:default, vrátí Domácí stránka >> (nastavitelný sep) Vítejte u nás
$this->template->title = $this->getTitle($this->presenter->name, $this->presenter->view);
Zajímá mne, jak to řešíte vy? Tedy jiné způsoby než přímo
ve stránce.
Myslím, že by to šlo rychleji a lépe nastavit pro nový projekt, kdyby to
šlo z jednoho místa.
(Dále by tam mohla být podpora názvu produtku apod., ale teď mi jde o ten základ.)
EDIT: Nakonec jsem použil něco ve stylu HeaderControl
,
tedy základní komponenta nastavitelná ve startup()
, resp. action
presenteru. Config až příliš unifikuje a zapomínal jsem titulek
nastavit.
Editoval Schmutzka (14. 3. 2013 20:07)
- Aearsis
- Člen | 57
Osobně mám v BasePresenteru abstraktní metodu setTitle, ve který si title nastavuju, abych na titulek nikde nezapomněl.
Řešit z jednoho místa je podle mě špatný, každý presenter by si měl stránku hlídat sám.
- Tomáš Votruba
- Moderator | 1114
Aearsis napsal(a):
Osobně mám v BasePresenteru abstraktní metodu setTitle, ve který si title nastavuju, abych na titulek nikde nezapomněl.
Řešit z jednoho místa je podle mě špatný, každý presenter by si měl stránku hlídat sám.
To by možná šlo. Mohl bys poslat ukázku? Díky.
duke napsal(a):
Napadá tě něco „legálního“, co by splňovalo jednoduchou a rychlou obsluhu?
Zatím jen sbírám nápady, tak se rád nechám čímkoliv inspirovat.
- duke
- Člen | 650
Jak říká Aearsis, můžeš použít nějakou metodu – např.
setHtmlTitle()
, kterou budeš volat z beforeRender
BasePresenteru. Přitom máš pořád zachovanou možnost si to v šabloně
přepsat.
Pokud nutně chceš mít všechny titly na jednom místě, tak si je můžeš
dát třeba do configu a v té metodě setHtmlTitle
je nějak
mapovat na aktuální presenter.
- Elijen
- Člen | 171
Kdyz uz, tak bych title tahal z DB. Pokud mas dynamicky generovane menu, tak staci pridat sloupec. U stranek jako detail clanku se title stejne vetsinou z DB musi tahat. A jak uz bylo receno do BasePresenter si dat pomocne metody.
Ja na to pouzivam komponentu, kde mam metody jako addTitlePart, setTitlePartSeparator, setTitlePrefix, setTitleSuffix, apod …
- Tomáš Votruba
- Moderator | 1114
duke napsal(a):
Mám v úmyslu využít basePresenter.php, díky za potvrzení. Zajímá mne hlavně, jak. Config je dobrý nápad, dokážu si představit, že to tam i bude lépe vypadat.
Elijen napsal(a):
Kdyz uz, tak bych title tahal z DB. Pokud mas dynamicky generovane menu, tak staci pridat sloupec. U stranek jako detail clanku se title stejne vetsinou z DB musi tahat. A jak uz bylo receno do BasePresenter si dat pomocne metody.
Ja na to pouzivam komponentu, kde mam metody jako addTitlePart, setTitlePartSeparator, setTitlePrefix, setTitleSuffix, apod …
DB zatím použít nechci, jde mi opravdu jen nahodit projekt (udělat presentery a šablony) a nakonec dopsat titles.
To zní dobře. Mohl bys nasdílet např. na gistu, prosím?
- Elijen
- Člen | 171
No ono je to jen asi 80 radku a psane tak nejak za pochodu jak se mi neco hodilo, tak nevim jestli je to publikovatelne :D
e: Tak jsem to hodil na pastebin.
Editoval Elijen (13. 2. 2012 16:45)
- awsickness
- Člen | 98
tohle reseni neni uplne dobre nebo ho mozna spatne chapu ale jak by si resil tohle
site.cz/contact -> Default:page slug => contact title chci -> site.cz - contact
site.cz/items -> Items:default slug=>null title chci -> site.cz - items
site.cz/kolo-55cm -> Items:detail slug=>kolo-55cm title chci -> site.cz - Kolo 55cm
ja mam predstavu neco jako presenter by definoval funkci getTitle plus entita / db object nebo neco z db by melo taky metodu getTitle a pak vysledek title by byl spojeni techto dvou. a je jedno zda v komponente / abstract function etc.
- Tomáš Votruba
- Moderator | 1114
Co popisuješ už není statické (o tom píši celou dobu), tedy
Items:detail kolo-55cm
ne. Také bez práce s db. Chápu, že
v této oblasti se moc věcí řešit nedá, můžeme tedy uzavřít.
Teď k dynamickému. Zajímavým řešením by byla práce s modelem, který by dostal např. tabulku, klíč a požadovaný sloupec a bylo by. Samozřejmě jednoduše. Nebo by slug mohl vstupovat přímo na stránce, protože se tam asi tak jako tak objeví.
{control title $item["name"]}
<!-- či růčo -->
{control title "Kolo 55cm"}
- awsickness
- Člen | 98
no ja jsem jen chtel naznacit ze malokdo dela jen staticky weby a je lepsi mit nastavovani title na jednom miste nez to psat na 2 az 3. a to se neresi multijazycnost. zkus vymyslet jak do toho pridat vice jazyku plus ten seznam $titles urcite do configu