Jak šablonovat více layoutu

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

Zdravím,
Mám takovej problém, popíšu zde mojí situaci.
Mám hlavní layout který je @layout.latte jak jsme normálně zvyklí a ten vypadá nějak takto:

{**
 * @param string   $basePath web base path
 * @param array    $flashes  flash messages
 *}

<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8">

	<title>{ifset title}{include title|striptags} | {/ifset}</title>

	<link rel="stylesheet" href="{$basePath}/css/style.css">
	<link rel="shortcut icon" href="{$basePath}/favicon.ico">
	<meta name="viewport" content="width=device-width">
	{block head}{/block}
</head>

<body>
	<div n:foreach="$flashes as $flash" n:class="flash, $flash->type">{$flash->message}</div>

	{include content}

	{block scripts}
	<script src="//code.jquery.com/jquery-1.11.3.min.js"></script>
	<script src="//nette.github.io/resources/js/netteForms.min.js"></script>
	<script src="{$basePath}/js/main.js"></script>
	{/block}
</body>
</html>

Ptostě je tam hlavička, patička a pod body je

{include content}

Mám další šablonu a to Homepage/default.latte
v ní mám tento kod

{layout 'layout.latte'}
{block content}


{block tabs}
text 1
    {/block}
    {/block}

a v Homepage/layout.latte

      <div class="col-md-9">

         {block tabs}{/block}

</div>

A já bych potřeboval aby když zobrazím hlavní stránku tak aby se tam zobrazil obsah Homepage/layout.latte kde by byl v bloku tabs obsah který je definován v default.latte a to samí třeba když zobrazím stránku dalsi.latte tak aby se tam zase zobrazil obsah který je v layout.latte kde by bylo zase v bloku tabs obsah který je definován v dalsi.latte .
Prostě mi jde o to aby se mi na ruzných stránkán zobrazoval stejný obsah ale pouze s jiným obsahem v bloku tabs. Ale musí zůstat stejná hlavní šablona @layout.latte kde chci pak vkládat další šablony který už nebudou v Homepage a budou se choval normálně.
Snad to nějak chápete moc to neumím popsat, budu rád za každou pomoc.
Děkuji.

F.Vesely
Člen | 369
+
0
-
{layout 'layout.latte'}

Tohle psat nemusis, staci, kdyz ten soubor pojmenujes Homepage/@layout.latte.

Jinak by melo stacit, kdyz v tom Homepage/@layout.latte budes mit {include tabs} a v Homepage/defaul.latte

{block content}

{/block}

{block tabs}
	text 1
{/block}
Martk
Člen | 661
+
0
-

default.latte

{includeblocks 'blocks.latte'}

{block content}
	{include tabs items => $items}
{/block}

blocks.latte

{define tabs}
	{default $tabs = []}
	...
{/define}
AdamBI
Člen | 17
+
0
-

To sice funguje ale teď se mi tam neukáže hlavička a patočka z hlavního @layout.latte
Potřebuju aby se ten obsah z Homepage/@layout.latte naincludoval do hlavního @layout.latte

{**
 * @param string   $basePath web base path
 * @param array    $flashes  flash messages
 *}

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">

    <title>{ifset title}{include title|striptags} | {/ifset}</title>

    <link rel="stylesheet" href="{$basePath}/css/style.css">
    <link rel="shortcut icon" href="{$basePath}/favicon.ico">
    <meta name="viewport" content="width=device-width">
    {block head}{/block}
</head>

<body>
    <div n:foreach="$flashes as $flash" n:class="flash, $flash->type">{$flash->message}</div>

    {include content} **Zde Homepage/@layout.latte**

    {block scripts}
    <script src="//code.jquery.com/jquery-1.11.3.min.js"></script>
    <script src="//nette.github.io/resources/js/netteForms.min.js"></script>
    <script src="{$basePath}/js/main.js"></script>
    {/block}
</body>
</html>
Myiyk
Člen | 321
+
0
-

možná v souboru Homepage/@layout.latte půjde použít

{layout ../@layour.latte}

ale netestoval jsem to, tak nevím

F.Vesely
Člen | 369
+
0
-

AdamBI napsal(a):

To sice funguje ale teď se mi tam neukáže hlavička a patočka z hlavního @layout.latte
Potřebuju aby se ten obsah z Homepage/@layout.latte naincludoval do hlavního @layout.latte

Z tveho prvniho prispevku jsem to pochopil jinak. Pak jedine, jak pise Antik, budes muset v kazdem <action>.latte includovat blocks.latte.