Snippety pro menší části a další problémy snippetů

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

Ahoj,
je možné pomocí snippetů a AJAXu:

  1. přidávat či odebírat ze stránky soubory s CSS styly, tzn. HTML tag <link>?
  2. editovat menší části jako jsou HTML atributy (např. <body class="{snippet bodyClass}{$currentPage}{/snippet}">)?
  3. používat atribut „id“ na elementu, který slouží zároveň jako snippet (např. <div id="content" n:snippet="content">)?
GEpic
Člen | 566
+
0
-

1. přidávat či odebírat ze stránky soubory s CSS styly, tzn. HTML tag <link>?

Ano, můžeš, obal to celé {snippet}em a uvnitř použij nějakou podmínku, kterou si v presenteru při ajaxovém požadavku předáš do šablony.

2. editovat menší části jako jsou HTML atributy (např. <body class=„{snippet bodyClass}{$currentPage}{/snippet}“>)?

Pokud použiješ inspect kodu v prohlížeči tak zjistíš, že makro {snippet} ti vytvoří div okolo toho, co je v něm. Viz:

{snippet flashMessages}{/snippet}

se změní na:

<div id="snippet--flashMessages">
</div>

3. používat atribut “id” na elementu, který slouží zároveň jako snippet (např. <div id=„content“ n:snippet=„content“>)?

Ano můžeš, otázka je, jestli se v tom nezamotáš. Já bych to tak nedělal, statické věci (jako html tagy, css ID a třídy) bych s Latte a PHP vůbec nemotal dohromady.

Můžeš ale použít opět to, co jsem napsal nahoře.

Editoval GEpic (25. 4. 2016 21:54)

lysua
Člen | 6
+
+2
-

3. používat atribut “id” na elementu, který slouží zároveň jako snippet (např. <div id=„content“ n:snippet=„content“>)?

Toto mozne neni. Sama Tracy Ti vyhodi vyjimku. Snippety jsou zalozene na id elementu a ten samozrejme nelze definovat 2×.

SuperMartas
Člen | 13
+
+1
-

1. přidávat či odebírat ze stránky soubory s CSS styly, tzn. HTML tag <link>?

Ano, můžeš, obal to celé {snippet}em

Tady je ale právě problém, že mi to vytvoří právě ten div#snippet--xyz, jak jsi sám napsal v bodu 2, což není validní (v <head> nelze mít <div>).

2. editovat menší části jako jsou HTML atributy (např. <body class=„{snippet bodyClass}{$currentPage}{/snippet}“>)?

Pokud použiješ inspect kodu v prohlížeči tak zjistíš, že makro {snippet} ti vytvoří div okolo toho, co je v něm.

3. používat atribut “id” na elementu, který slouží zároveň jako snippet (např. <div id="content" n:snippet="content">)?

Toto mozne neni. Sama Tracy Ti vyhodi vyjimku.

A proto se ptám, jestli neexistují jiné cesty, jak toho docílit. :)

CZechBoY
Člen | 3608
+
0
-

Muzes posilat celou head, kde snad muzes mit id.