jak vložit {block #kus_title} do šablony z databáze?

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
Jarda
Člen | 25
+
0
-

Ahojte,
začal jsem používat nové šablony využívající bloky a jsem z nich unešen. Dokud mám texty jednotlivých stránek/článků v souborech a vytvářím je jako potomky base_šablony a layoutu, tak je to paráda. Ze systému bloků jsem opravdu nadšen.

Potřeboval bych poradit nebo nasměrovat, jestli je možné nějakým způsobem zpracovat bloky načtené z databáze, aby mi probublaly až do layoutu.

Nyní funguji takto: mám layout stránky

{*@layout - klasický základ html stránky*}
<html>
<head>
 <title>{block #title}Můj web{/block}</title>
 <meta ...>
 ...
</head>
<body>
 {include #content}
</body>
</html>

různé šablony kostry obsahu, která je potomkem layoutu

{* base_template_with_sidebar.phtml *}
{extends $layout}

{block #content}
 {block | texy}
  <div id="text_content">
   {include #textcontent}
  </div>

  <div id="sidebar_content">
   {block #sidebar}default sidebar content{/block}
  </div>

 {/block}
{/block}

šablonu článku, která je potomkem jedné z koster obsahu

{* index_article.phtml *}
{extends base_template_with_sidebar.phtml}

{block #title}{include #h1} | {include #parent}{/block}
{block #description}....{/block}
{block #keywords}...{/block}

{block #textcontent}
{block #h1}Nadpis, který mi probublá až do title layoutu{/block}
############################

text článku
{/block}

{block #sidebar}
Tady chci vlastní obsah sidebaru
=================================
- Lorem ipsum dolor sit amet
- consectetuer Sed Cum
- habitant Ut Suspendisse.

{/block}

Moc by mi usnadnilo práci, kdybych byl schopen obsah článků podobně jako je naznačeno v index_article.phtml uchovávat v databázi. Koumal jsem nad tím, ale zatím jsem nepřišel na nic funkčního.

  1. Jak aplikovat latte filtr na obsah načtený z databáze, aby si to zpracovalo alespoň bloky a ty problublaly k layoutu?
  2. Nabízí se otázka, jestli chtít krom zpracování bloků také eval() např. pro generování linků, cykly apod.

Ty popisované bloky by se daly přes dtb částečně obejít tím, že by se v dtb uchovávaly zvlášt title, description, keywords atd., ale pak nastává problém se zde naznačeným include #h1 z textu do title a např. se sidebarem, protože u každé stránky třeba sidebar nepotřebuju a u některých stránek chci title jiný než je H1 v textu.

Koňské řešení by bylo z databáze přesypat obsah do souborů jako jednotlivé šablony článků a fungovalo by to jako teď.

Co si o tom myslíte? Jakou cestu zvolit?

Ondřej Mirtes
Člen | 1536
+
0
-

„If eval() is the answer, you're almost certainly asking the wrong question“ :))

Systém bloků a jejich zpracování je rozparsován a předpřipraven v cachi, takže si myslím, že nějaké run-time operace, které by změnily zpracování bloků, možné nejsou.

A opět – jednalo by se o dost velkou zbraň pro uživatele CMS a útočníky.

Jarda
Člen | 25
+
0
-

jj, eval() is evil :), nechci do toho pouštět žádné cizí uživatele, chtěl jsem administraci pro vlastní potřebu. No, nejspíš si budu muset admina udělat přímo nad soubory, nebo to do souborů vždy přesypat.

Ondřej Mirtes
Člen | 1536
+
0
-

Přímé editování souborů v takovém případě je řešení :) Do databáze bych si akorát pro informaci ukládal jednotlivé revize, protože de facto edituješ zdrojáky své aplikace a nemít je verzované (např. Gitem) je také cesta do pekel :)