Šablony a dedenie

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

Zdravím.

Možno sa to tu už preberalo, nič podobného som nenašiel.

Mám stránky, titulka je úplne iná ako ostatné podstránky. Tie podstránky majú rovnaký design. Ako by ste riešili túto problematiku? Základný layout mám v @layout.phtml.

Díky.

Cifro
Člen | 245
+
0
-

Najjednoduchšie, asi takto:

// DefaultPresenter.php

public function actionDefault()
{
	$this->view = 'homepage';
	// alebo aj
	$this->layout = '@homepageLayout';
}

A pri ostatných pod strankach budeš mať iný (defaultný) @layout.phtml a iné pohľady.

Ondřej Mirtes
Člen | 1536
+
0
-

Já bych to v Presenteru vůbec nezohledňoval. Jen bych do šablony Default.default.phtml nahoru napsal:

{extends @layout.homepage.phtml}
{block #content}

obsah

Případně, pokud ten layout bude mít opravdu jen tato stránka, tak bych se nějakou tvorbou layoutu ani nezabýval, na začátek souboru žádné extends nebo block nepsal – žádný layout se v takovém případě nenačte.

lactarius
Člen | 47
+
0
-

Já myslel, že {extends …} už není nutné – teda, aspoň to nepoužívám. Místo toho
@layout.phtml:

<div id="header">
{block header}
{/block}
</div>

<div id="nav">
{block nav}
{/block}
</div>

<div id="content">
{block content}
{/block}
</div>

default.phtml:

{block nav}
.
..menu..
.
{/block}

{block content}
.
..main content..
.

a mělo by to snad fungovat i se zachováním obsahu rodičovské šablony (nezkoušel jsem)

{block nav}
{include #parent}
.
..menu
.
{/block}
Ondřej Mirtes
Člen | 1536
+
0
-

Ano, {extends} není potřeba, pokud extenduješ defaultní @layout.phtml. Pokud chceš ale extendovat jiný layout, napíšeš {extends jinyLayout.phtml}.

duracel
Člen | 18
+
0
-

Díky. Mňa skor zaujíma tá podstránka. Napadlo ma niečo také, že by pre všetky stránky bol layout podstránky, a titulka by to nejak prepísala.