Prekladanie titulku, dedicnost sablon
- JakubJarabica
- Gold Partner | 184
Zdravím,
v @layout.phtml mám nasledujúci fragment kódu:
<?php
<title>{_$title}</title>
?>
… a v konkrétnej šablóne(napr. Skupina/default.phtml) na začiatku:
<?php
{assign title => "Skupina"}
?>
Problém nastáva, keď chcem do titulku dostať premennú, napr. za
„Skupina“ vypísať názov skupiny.
Aby sa mi nestalo to, že bude chcieť prekladať každý jeden string (Skupina
A, Skupina B, ..)
<?php
{assign title => "Skupina $nazovSkupiny"}
?>
by bolo pekné zapísať to ako Skupina %s a v parametri poslať názov. Tak sa preloží jednorazovo len Skupina %s.
Otázka: Ako to preložím? Ideálne by bolo, keby sa to celé vyhodnotí a preloží už v konkrétnej šablóne a do @layout sa nesahá, tam sa to už dosadí hotové(aby som nemusel kadejako manipulovať s prvým zdrojákom v tomto poste). Ako to však(kľudne aj nejakou nečistou cestou) dosiahnuť? Vopred ďakujem :o)
- JakubJarabica
- Gold Partner | 184
Super! Toto je presne niečo, čo som potreboval. Hľadal som takúto nejakú metódu tu: Template Filters, no tam to chýba.
Myslím si, že rozumnejšie riešenie nie je, aj napriek tomu, že teraz musím upraviť každú šablónu aby ten title preložilo hneď :)
A už len upravím tvoj kód tak, aby fungoval(pre prípad, že niekto bude riešiť rovnaký problém):
<?php
{assign title => $template->translate("Skupina %s", $nazovSkupiny)}
?>
Edit: Som taký rád, že som zabudol poďakovať. Vďaka! :)
Editoval JAM3SoN (12. 2. 2010 22:52)
- redhead
- Člen | 1313
Jsem rád, že jsi rád.
Ale šlo by to možná udělat elegantněji, protože v šabloně takovéto haluze nejsou pěkné a špatně se udržují, když jsou na více místech. Zkus popřemejšlet, zda by to nešlo překládat už v presenteru (předávat šabloně nějakou proměnnou $title už s přeloženým textem), nebo ještě líp někde v modelu pokud se to tahá od někaď z DB. Pak by to bylo jednotné v celé aplikaci..
Editoval redhead (12. 2. 2010 23:12)
- Ondřej Mirtes
- Člen | 1536
A co využít bloky?
Layout:
<title>{include #title}</title>
Konkrétní šablona:
{block #title}{_"Skupina $nazevSkupiny"}{/block}
- JakubJarabica
- Gold Partner | 184
@redhead:
Ten assign na začiatku každej šablony tam mám náročky, nakoľko mi príde
logické hľadať title pre aktuálnu šablónu v konkrétnom súbore
v šablóne. Predtým som to plnil v renderXXX do
$this->template->title, ale už ani tam sa mi to nepáčilo. V šablóne
to je imho najintuitívnejšie, taktiež si neviem predstaviť, že by chcel
niekto editnúť titulok a šiel by ho hladať až do modelu.
@Ondřej:
Skvelé, to je ešte čistejšie. Dobre, že som to v celej appske už nezačal
prepisovať :) Ale stále by to robilo to čo nechcem, treba tam použiť %s a
poslať premennú ako parameter ;). Ďakujem.