Zend_Markup Renderer
Zend_Markup wird aktuell mit einem Renderer ausgeliefert, dem
HTML Renderer.
Eigene Markups hinzufügen
Indem man eigene Merkups hinzufügt, kann man den Zend_Markup
Renderern eigene Funktionalitäten hinzufügen. Mit der Markup Struktur kann man jede
Funktionalität welche man haben will hinzufügen. Von einfachen Markups bis zu
komplizierten Markup Strukturen. Ein einfaches Beispiel für ein 'foo' Markup:
addMarkup(
'foo',
Zend_Markup_Renderer_RendererAbstract::TYPE_REPLACE,
array(
'start' => '-bar-',
'end' => '-baz-',
'group' => 'inline'
)
);
// Jetzt gibt dies folgendes aus: 'my -bar-markup-baz-'
echo $bbcode->render('my [foo]markup[/foo]');
]]>
Es gilt zu beachten das die Erstellung eigener Markups nur dann Sinn macht wenn der
eigene Parser diese auch in einer Markup Struktur unterstützt. Aktuell unterstützt dies
nur BBCode.
Einige Renderer (wie der HTML Renderer) enthalten auch Unterstützung
für einen 'markup' Parameter. Dieser ersetzt die 'start' und 'end' Parameter, und er
stellt die Markups inklusive einiger Standardattribute und dem schließenden Markup dar.
Ein Callback Markup hinzufügen
Durch das Hinzufügen eines Callback Markups kann man viel mehr tun als nur das
einfache Ersetzen von Markups. Zum Beispiel kann man den Inhalt ändern, die
Parameter verwenden um die Ausgabe zu beeinflussen, usw.
Ein Callback ist eine Klasse welche das
Zend_Markup_Renderer_TokenInterface Interface implementiert.
Ein Beispiel einer einfachen Callback Klasse:
Jetzt kann man das 'upper' Markup, mit einem Callback einer Instanz der Klasse
My_Markup_Renderer_Html_Upper hinzufügen. Ein einfaches
Beispiel:
addMarkup(
'upper',
Zend_Markup_Renderer_RendererAbstract::TYPE_CALLBACK,
array(
'callback' => new My_Markup_Renderer_Html_Upper(),
'group' => 'inline'
)
);
// Jetzt wird die folgende Ausgabe erstellt: 'my !up!MARKUP!up!'
echo $bbcode->render('my [upper]markup[/upper]');
]]>
Liste der Markups
Liste der Markups
Beispiel Eingabe (BBCode)
Beispiel Ausgabe
[b]foo[/b]
foo]]>
[i]foo[/i]
foo]]>
[cite]foo[/cite]
foo]]>
[del]foo[/del]
foo]]>
[ins]foo[/ins]
foo]]>
[sup]foo[/sup]
foo]]>
[sub]foo[/sub]
foo]]>
[span]foo[/span]
foo]]>
[acronym title="PHP Hypertext Preprocessor]PHP[/acronym]
PHP]]>
[url=http://framework.zend.com/]Zend Framework[/url]
Zend Framework]]>
[h1]foobar[/h1]
foobar]]>
[img]http://framework.zend.com/images/logo.gif[/img]
]]>