Oznámení
Úprava ImageModule
před 14 lety
- johno
- Člen | 10
Chcem sa opýtať, lebo som sa v tom nemal čas poriadne pohrabať, ale dá sa znásilniť modul obrázkov tak, aby mi namiesto jednoduchého <img src=„… generoval napríklad <div class="t“><div class=„b“><img src="… ?
Poprípade úplne iné a zvrhlejšie konštrukcie kde by sa potom nejako dalo použiť aj zarovnávanie, title, alt, atď.
Uvažoval som nad napísaním vlastného modulu kde by som si vytvoril vlastné spracovanie a výstup, ale ešte som nejako úplne nepochopil kde a hlavne ako moduly môžu vrátiť viac tagov. Chcelo by tom nejaký tutorial na moduly. Možno tam niečo také je, ale lenivosť a pokročilá nočná hodina mi nedovoluje to nájsť.
Uvítam akékoľvek nakopnutie správnym smerom.
před 14 lety
- David Grudl
- Nette Core | 6806
Velmi obecně jak Texy pracuje:
- během inicializace Texy se registrují moduly (metodou
$texy->registerModule($name, [$alias])
) - každý modul (následník třídy TexyModule) si během inicializace registruje určité regulární výrazy, které chce zpracovávat. Zároveň je nositelem nastavení (tedy $texy->htmlModule->allowed = …)
- při zpracování nahradí nalezené řetězce za prvky TexyDOM
- výsledkem zpracování textu je DOM, uložené v $texy->DOM (zdejší DOM nemá mnoho společného s DOM jaké známe z JavaScriptu, například nemusí být wellformed)
- toto se poté převede do XHTML (nebo čistého textu, apod.)
Při generování DOM výsledného XHTML se volá metoda
toHTML()
která vrací výsledný řetezec. Tato metoda (obvykle)
volá generateTags(&$tags)
a generateContent()
a
z vrácených hodnot poskládá výsledek.
generateTags(&$tags)
vrací asociativní pole, kde klíče jsou tagy a hodnota je opět asociativní pole, atribut ⇒ hodnota.generateContent()
vrací řetězec
V čem je háček – vnitřnosti Texy zatím nepovažuju za zcela ideální. Ano, jsem idealista a dokud to nebude kryšťálově dokonalé, chci to předělávat. V tuto chvíli nevím jak, to se nedá vymyslet, to musí napadnout :-) Počítám tedy s úpravami a nechci mít svázané ruce tím, že někdo bude na současném API stavět. Proto nikde nezveřejňuji podrobnosti ani tutoriály. Zatím…
(pozn.: platí pouze pro Texy 1.x)