Datum: 08.02.2011
, Kategorie:
PHP
Der BBCode-Parser, der Bestandteil des Zend Frameworks ist, funktioniert bestens. Was aber, wenn man zum Beispiel zu den URLs automatisch weitere Attribute hinzufügen möchte, wie zum Beispiel target="_blank" oder rel="nofollow"?
Für diesen Fall kann man originalen Renderer durch einen Eigenen ersetzen. Das funktioniert exakt wie in der Dokumentation des Frameworks beschrieben. Für den oben genannten Fall mit dem Link tag kopiert man sich die Klasse "Zend_Markup_Renderer_Html_Url" und passt darin den <a> tag an.
"<a href=\"{$uri}\"{$attributes} target=\"_blank\" rel=\"nofollow\">{$text}</a>";
Als nächstes definiert man die neue Klasse als Markup Renderer und überschreibt sozusagen den bestehenden Renderer für den [url] tag.
$bbcode = Zend_Markup::factory('Bbcode');
Zend_Loader::loadClass('My_Markup_Renderer_Html_Url');
$bbcode->addMarkup(
'url',
Zend_Markup_Renderer_RendererAbstract::TYPE_CALLBACK,
array(
'callback' => new My_Markup_Renderer_Html_Url(),
'group' => 'inline'
)
);
Mit dieser Methode wird dann aus [url=http://www.example.com/]Beispiel[/url] folgendes:
<a href="http://www.example.com/" target="_blank" rel="nofollow">Beispiel</a>