Layout: jak obalit několik 'block'ů DIVem, jen když je aspoň jeden z nich neprázdný?

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

Ahojte, už po 3 dnech zkoušení jsem se zamiloval do Nette :), ale teď řeším jeden problém:

Mám @layout.phtml, a v něm levý sloupec:

<?php
	<div class="sloupce">
		<div class="levy">
			{block #menu}{/block}
			{block #loginform}{/block}
		</div>
		<div class="hlavni">
			...
		</div>
	</div>
?>

Na některých stránkách ale žádný z oněch dvou bloků nemá žádný obsah (například proto, že uživatel už je přihlášený, a daná stránka nemá žádné postranní menu (např. pro své subkategorie)). Když tohle nastane, chtěl bych to zjistit, a daný sloupec vůbec nevypsat (a tomu druhému např. změnit třídu na ‚jeden-sloupec-pres-celou-stranku‘).

Zkoušel jsem tohle:

<?php
	{var blok1 => {block #menu}{/block}}
	{var blok2 => {block #loginform}{/block}}
	{var sloupecCely => $blok1 . $blok2 }
	{if (!empty($sloupecCely))}
		<div class="levy">
			<h3>Listicka</h3>
			{$sloupecCely}
		</div>
	{/if}
?>

{block #menu}{/block} ale akorát vyhodí chybu, chtělo by to nějak zjistit obsah daného bloku – zkoušel jsem reset($_cb->blocks[‚menu‘]), ale dostal jsem jen jméno funkce, co ho vypíše, takže bych to jeste musel obalit output bufferingem, a celé je to dost ošklivý hack závislý na implementaci Latte…

Má cenu to zkoušet dál, nebo to prostě nejde?

'kuju moc :))

Editoval keff (7. 8. 2010 23:23)

pave.kucera
Člen | 122
+
0
-

Možná by to šlo „opisem“ zařídit tak, že pohledy, které mají levý sloupec budou definovat nějakou proměnnou, podle které se určí, jestli blok zobrazit, nebo ne?

norbe
Backer | 405
+
0
-

Mělo by to jít vyřešit pomocí makra capture

keff
Člen | 12
+
0
-

JannBaill napsal(a):

Možná by to šlo „opisem“ zařídit tak, že pohledy, které mají levý sloupec budou definovat nějakou proměnnou, podle které se určí, jestli blok zobrazit, nebo ne?

Tohohle jsem se chtěl vyvarovat, chtěl jsem aby se např. přihlášení uživatele řešilo na jednom místě (teď by musely všechny pohledy ověřovat tuhle podmínku…) – ale díky za radu!

norbe napsal(a):

Mělo by to jít vyřešit pomocí makra capture

Super – to je přesně to co jsem hledal (a nenašel), dík!