Textpattern: kouzlo značky output_form

Jedna z věcí, které se mi na Textpatternu líbí, je to, že podporuje logické strukturování kódu stránek. Jedním z účinných prostředků této podpory jsou šablony, které se v anglické verzi nazývají poněkud matoucím slovem form a ve verzi české formy. Já jim budu, s dovolením, říkat prostě šablony.

Na první pohled mají tyto šablony jediný účel: definovat formátování článků a komentářů. O tom něco napíši příště. Teď chci ale upozornit na jinou silnou vlastnost šablon. Můžete je totiž vkládat nejen do stránky (page), ale i do sebe navzájem. Slouží k tomu značka <txp:output_form /> s jediným parametrem form, který určuje název vkládané šablony.

Na první pohled nic zajímavého, ale ve skutečnosti tím dosáhnete velmi přehledného kódu. Např. stránka weblogu Sovy v síti je díky značce output_form definována takto jednoduše:

<txp:output_form form="pg_top" /> <txp:output_form form="pg_nav" /> <div id="maincontent"> <txp:if_article_list><h1>Weblog pro webmastery a webdesignéry</h1></txp:if_article_list> <txp:article form="blogpost_detail" limit="8" listform="blogpost_fp" /> <txp:if_article_list><p><txp:older>Starší články</txp:older></p></txp:if_article_list> </div> <div id="sidebar"> <txp:if_article_list> <txp:output_form form="sb_linklog" /> <txp:output_form form="sb_recent_comments" /> </txp:if_article_list> <txp:output_form form="sb_blogarchive" /> <txp:output_form form="sb_footer" /> </div> <txp:output_form form="pg_bottom" />

Vše kromě hlavního obsahu stránky je tak ukryto v šablonách, může to být snadno zvlášť upravováno a hlavně znovu použito na jiných stránkách. Kromě HTML kódu mohou navíc šablony obsahovat i skripty v jazyce PHP a starat se tak o složitější aplikačni logiku.

Navazuje na: Textpattern: Entity místo českých znaků.

, 9. 02. 2005 00:35, Pošli komentář

| Nejnovější |

Komentáře

  1. Anebo jinak řečeno – je to nepřehledná hrůza.

    Proč musí každý tvůrce nějakého systému vymýšlet svoje super-hyper šablonové řešení a pak z toho udělat zprasený jazyk, popírající oddělení vzhledu od funkčnosti.

    I když tohle možná trošku chápu – každý programátor si to chce zkusit napsat.

    Co ale nechápu vůbec, je, že laičtí uživatelé těchto produktů tato zprasená řešení obdivují a podporují a jsou schopni napsat něco jako “šablony je možné vnořovat” (lidé tleskají), “dosáhnete tím přehledného kódu” (sedmý div světa, lidé vstávají ze sedadel), “podívejte jak vypadá hlavní stránka jednoduše (čti ‘zpraseně’)” (Nobelova cena, slabší jedinci omdlévají)...

    Tedy – vyjmenované vlastnosti jsou SAMOZŘEJMÉ. Kdyby je ten systém neměl, tak je nepoužitelný ještě víc než je teď. Pokud systém umí do šablon vkládat PHP, tak to nic neříká o tom, že je autor geniální, ale o tom, že je to bastl na bastly.

    — Petr · 7320 days ago · #

  2. [1] Petře, Vašemu komentáři nerozumím. Na jednu stranu říkáte, že popisované řešení je špatné, ale současně tvrdíte, že je samozřejmé a systém by byl bez něj nepoužitelný. Jak to tedy je?

    Navíc je škoda, že nepíšete, proč je to řešení podle Vás špatné. Jako jediný konkrétní důvod zmiňujete nedostatečné oddělení vzhledu od funkčnosti. V případě šablon Textpatternu jde ale jen o ten vzhled – funkčnost je úplně někde jinde – takže není co oddělovat.

    Marek Prokop · 7320 days ago · #

  3. Marek dosiaľ nemám nejakú predstavu o tom systéme, asi by to chcelo nejakú prezentáciu – obrázky/screenshoty (ak je to vôbec relevantná požiadavka) – niečo na spôsob roadshow “Chcem Textpattern” od človeka, čo to neprogramoval a pozerá na to ako Anička :-)

    Robert Madaj · 7320 days ago · #

  4. [3] http://opensourcecms.com/ – tam je několik blogovadel k vyzkoušení.

    Jiří Bureš · 7319 days ago · #

  5. OT: nešlo by malinko zvětšit písmo v CODE? mám to ve firefoxu strašně malé oproti ostatímu textu

    Misha · 7319 days ago · #

  6. Hej, to pismo je male.

    Co sa tyka template jazykov – ich pouzitie je naozaj rozsirene, naozaj obdivovane a naozaj nepravom. Ved je to zbytocne matanie ludi, pricom im nikto nepovie, ze PHP sam je vyborny templatovaci jazyk vyznacujuci sa schopnostou plynule prechadzat z HTML do PHP a spat.

    Pritom ten jazyk je tak jednoduchy, ze ho ludia pochopia lahsie ako tieto neprehladne templates. Pretoze, to co je tu definovane cez templates, sa da velmi lahko nadefinovat cez PHP:
    napr:

    <? $page->Show(“pg_top”); ?>
    <? $page->Show(“pg_nav”); ?>
    <div id=”maincontent”>
    <? if ($page->articlelist): ?>
    <h1>Weblog pro webmastery a webdesignéry</h1>
    <? endif; ?>

    atd.

    Kratsie, jednoduchsie a prehladnejsie.

    Myslim, ze to ludia vseobecne ne(s)poznaju prave kvoli snahe autorov CMS pchat templates tam, kde ich vobec nie je treba.

    dusoft · 7319 days ago · #

  7. Zcela souhlasím se [6], navíc (naštěstí) nemáme jen PHP, třeba v JSP si člověk může vytvořit vlastní značky skrývající “vnitřní” implementaci a dosáhnout tak ve svých stránkách přehlednosti a pružnosti návrhu přímo nevídané. Jedna značka pro záhlaví, druhá pro seznam článků, třetí pro zápatí. Prostě krásné :-)

    — Radek Burget · 7319 days ago · #

  8. [3] Roberte, Textpattern je velmi intuitivní. Já jsem v něm první weblog udělal za pár hodin od okamžiku, kdy jsem ho viděl poprvé v životě. Nechci proto psát kompletní návod, jak Textpattern rozběhnout. Chci popsat jen věci, které až tak intuitivní nejsou a mohou někomu ušetřit zbytečné pokusy a omyly. Zároveň v tomto seriálu reaguji na nejčastější otázky, které mi chodí emailem.

    [4] Dusofte, hezký příklad, díky. Pro lidi, kteří znají PHP bude tento zápis asi opravdu jednodušší. Já PHP neznám, takže v tom žádný rozdíl nevidím.

    Evidentně se ale shodneme na tom, že šablony jsou fajn a zpřehledňují kód. V jakém jazyce ty šablony jsou, mi připadá druhotné.

    Snahu autorů většiny CMS implementovat vlastní šablonovací jazyk si vysvětluji požadavkem na přenositelnost. Budu-li mít vzhled webu definován proprietárním jazykem konkrétního CSM, pak by mělo vše fungovat i v portu tohoto CMS na zcela jinou platformu. Použiji-li PHP, už to tak snadné být nemusí.

    Marek Prokop · 7319 days ago · #

  9. Ved to je v poriadku, chapem, ze plno ludi neovlada PHP.

    Ten zlom je v tom, ze ak je to “programovaci jazyk”, kopa ludia sa zlakne. Ak je to “sablona”, naucim sa to. Pritom je to uplne jedno, ved “sablona” sa rovna novy “programovaci jazyk” ;-)

    dusoft · 7319 days ago · #

  10. Nevidím nic mätúceho na anglickom slove Form a v češtine a slovenčine sa tuším viac používa slovo Formulář/Formulár, ako Forma. A nie som síce odborník na web, ale pokiaľ viem, tak tieto formuláre (alebo šablony, ak chcete) majú hlavný význam pre odosielanie dát na server. Tak, ako formulár v papierovej forme slúži na odosielanie údajov vo vopred nadefinovanej štruktúre klasickými doručovacími metódami, tak vo web stránkach slúži na odosielanie údajov elektronickou formou na server. Na logické štruktúrovanie kódu stránky by hádam stačili direktívy Include, alebo niečo podobné, nie ? Opravte ma, ak sa mýlim. Venujem sa skôr desktopovým aplikáciám.

    — Ondrej Jagerský · 7072 days ago · #

  11. [10] Matoucí na termínu form je to, že v Textpetternu neoznačuje formulář, nýbrž vnořenou šablonu. Značka txp:output_form form funguje přesně jako include.

    Marek Prokop · 7069 days ago · #

Commenting is closed for this article.