Ujasnění použití {block} a {define} v Latte

kejlicz
Člen | 201
+
0
-

Ahoj všem.

Narazil jsem na jednu věc, která mi není jasná, proč se děje a nejsem si jistý, jestli {block} a {define} správně používám.

Ukázka:

Uvnitř tagu <head> v @layout.latte

{block canonocal}{/block}

detail.latte (toto normálně funguje a <link> se doplní do <head>

{define canonocal}
	<link rel="canonical" href="https://example.com/saty/zelene-saty" />
{/define}

Ale když chci podmínkovat, opět detail.latte

{if false}
	{define canonical}
		<link rel="canonical" href="https://example.com/saty/zelene-saty" />
	{/define}
{/if}

I když je podmínka false, tak se <link> do <head> doplní. Když obalím podmínkou cokoliv jiného, tak to normálně funguje, tak jak má, ale, když použiju {define}, doplní to blok pokaždé, i když je podmínka negativní.

Proč se to děje?

Díky moc.

Editoval kejlicz (14. 12. 2019 21:49)

Marek Bartoš
Nette Blogger | 1165
+
+1
-

Imho jen parser nerozpoznal, že to používáš špatně. Blok lze podmínečně vykreslit pomocí {ifset canonical}{include canonical}{/ifset}, nelze jej podmínečně definovat. Tzn. {if false} umísti dovnitř bloku

kejlicz
Člen | 201
+
0
-

Díky moc.