Generování title z databáze a probublání do layoutu

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

Ahoj všem,
je to určitě nějak jednoduše řešitelné, ale asi něco přehlížím, potřeboval bych jen nakopnout správným směrem.

Takže mám @layout.latte

<!DOCTYPE html>
<html lang="cs">
  <head>
  <title>{block title|striptags}{/block} | Moje stranka.cz</title>
  </head>

<body>
 {include #content}
</body>

</html>

Do #content vložím stránku s n:block=„title“ z databáze:

{block #content}
{foreach $products as $product}
    <h1 n:block="title">{$product->item}</h1>
{/foreach}

a dostanu chybovou hlášku od Laděnky: „Undefined variable: product“
Pokud ale vložím do stránky pouze h1 bez n:block=„title“, tak se samozřejmě dostane text z databáze mezi tagy <h1>..</h1> a probublá až do layout takto:

<h1>{$product->item}</h1>

Stejně tak funguje a probublá až do layout title ručně vložený text:

<h1 n:block="title">Ručně vložený text</h1>

Prostě nefunguje vložit text title z databáze.
Díky za případné nasměrování…

Darkling
Člen | 35
+
0
-

Ahoj,
moc nerozumím o co se snažíš. Pokud chceš mít v tagu title názvy všech produktů (což taky nedává moc smysl) tak asi takhle:

<?php
{block title}
	{foreach $products as $product}
    	{$product->item}{sep},{/sep}
	{/foreach}
{/block}
?>

Prostě nemůžeš iterovat nad blokem (aspoň myslím). A ještě jedna poznámka není moc dobrý používat víc jak jeden h1 na jedné stránce z hlediska SEO.

Editoval Darkling (1. 12. 2014 15:08)

Petr Havlíček
Člen | 4
+
0
-

Ahoj,
možná jsem to špatně definoval, iterovat samozřejmě nepotřebuji, a foreach stejně vrátí jen 1 výsledek. Snažím se jednoduše do title vložit text z databáze. A to se tváří že nejde. Jak to řešit bez foreach? Nemůže být problém v tom? Zatím mi to chování nedává smysl.

Díky

David Matějka
Moderator | 6445
+
+2
-

nad selection zavolej fetch(), coz vrati nasledujici (prvni) radek. pripadne rovnou `get($id)

viz doc https://doc.nette.org/…ase/explorer#…