Zend_Markup Renderer Zend_Markup wird aktuell mit einem Renderer ausgeliefert, dem HTML Renderer. Eigene Tags hinzufügen Indem man eigene Tags hinzufügt, kann man den Zend_Markup Renderern eigene Funktionalitäten hinzufügen. Mit der Tag Struktur kann man jede Funktionalität welche man haben will hinzufügen. Von einfachen Tags bis zu komplizierten Tag Strukturen. Ein einfaches Beispiel für ein 'foo' Tag: addTag( 'foo', Zend_Markup_Renderer_RendererAbstract::TYPE_REPLACE, array( 'start' => '-bar-', 'end' => '-baz-', 'group' => 'inline' ) ); // Jetzt gibt dies folgendes aus: 'my -bar-tag-baz-' echo $bbcode->render('my [foo]tag[/foo]'); ]]> Es gilt zu beachten das die Erstellung eigener Tag nur dann Sinn macht wenn der eigene Parser diese auch in einer Tag Struktur unterstützt. Aktuell unterstützt dies nur BBCode. Textile hat keine Unterstützung für eigene Tags. Einige Renderer (wie der HTML Renderer) enthalten auch Unterstützung für einen 'tag' Parameter. Dieser ersetzt die 'start' und 'end' Parameter, und er stellt die Tags inklusive einiger Standardattribute und dem schließenden Tag dar. Ein Callback Tag hinzufügen Durch das Hinzufügen eines Callback Tags kann man viel mehr tun als nur das einfache Ersetzen von Tags. 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' Tag, mit einem Callback einer Instanz der Klasse My_Markup_Renderer_Html_Upper hinzufügen. Ein einfaches Beispiel: addTag( 'upper', Zend_Markup_Renderer_RendererAbstract::TYPE_REPLACE, array( 'callback' => new My_Markup_Renderer_Html_Upper(), 'group' => 'inline' ) ); // Jetzt wird die folgende Ausgabe erstellt: 'my !up!TAG!up!' echo $bbcode->render('my [upper]tag[/upper]'); ]]> Liste der Tags Liste der Tags 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] ]]>