Zend_Markup-Renderers.xml 7.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!-- EN-Revision: 20760 -->
  3. <!-- Reviewed: no -->
  4. <sect1 id="zend.markup.renderers">
  5. <title>Zend_Markup Renderer</title>
  6. <para>
  7. <classname>Zend_Markup</classname> wird aktuell mit einem Renderer ausgeliefert, dem
  8. <acronym>HTML</acronym> Renderer.
  9. </para>
  10. <sect2 id="zend.markup.renderers.add">
  11. <title>Eigene Tags hinzufügen</title>
  12. <para>
  13. Indem man eigene Tags hinzufügt, kann man den <classname>Zend_Markup</classname>
  14. Renderern eigene Funktionalitäten hinzufügen. Mit der Tag Struktur kann man jede
  15. Funktionalität welche man haben will hinzufügen. Von einfachen Tags bis zu komplizierten
  16. Tag Strukturen. Ein einfaches Beispiel für ein 'foo' Tag:
  17. </para>
  18. <programlisting language="php"><![CDATA[
  19. // Erstellt eine Instanz von Zend_Markup_Renderer_Html,
  20. // mit Zend_Markup_Parser_BbCode als seinen Parser
  21. $bbcode = Zend_Markup::factory('Bbcode');
  22. // Dies erstellt ein einfaches 'foo' Tag
  23. // Der erste Parameter definiert den Namen des Tags
  24. // Der zweite Parameter nimmt ein Integer welche den Typ des Tags definiert
  25. // Der dritte Parameter ist ein Array die andere Dinge des Tags definiert
  26. // wie die Gruppe des Tags, und (in diesem Fall) ein Start und Ende Tag
  27. $bbcode->addTag(
  28. 'foo',
  29. Zend_Markup_Renderer_RendererAbstract::TYPE_REPLACE,
  30. array(
  31. 'start' => '-bar-',
  32. 'end' => '-baz-',
  33. 'group' => 'inline'
  34. )
  35. );
  36. // Jetzt gibt dies folgendes aus: 'my -bar-tag-baz-'
  37. echo $bbcode->render('my [foo]tag[/foo]');
  38. ]]></programlisting>
  39. <para>
  40. Es gilt zu beachten das die Erstellung eigener Tag nur dann Sinn macht wenn der eigene
  41. Parser diese auch in einer Tag Struktur unterstützt. Aktuell unterstützt dies nur
  42. BBCode. Textile hat keine Unterstützung für eigene Tags.
  43. </para>
  44. <para>
  45. Einige Renderer (wie der HTML Renderer) enthalten auch Unterstützung für einen 'tag'
  46. Parameter. Dieser ersetzt die 'start' und 'end' Parameter, und er stellt die Tags
  47. inklusive einiger Standardattribute und dem schließenden Tag dar.
  48. </para>
  49. <sect3 id="zend.markup.renderers.add.callback">
  50. <title>Ein Callback Tag hinzufügen</title>
  51. <para>
  52. Durch das Hinzufügen eines Callback Tags kann man viel mehr tun als nur das einfache
  53. Ersetzen von Tags. Zum Beispiel kann man den Inhalt ändern, die Parameter verwenden
  54. um die Ausgabe zu beeinflussen, usw.
  55. </para>
  56. <para>
  57. Ein Callback ist eine Klasse welche das
  58. <classname>Zend_Markup_Renderer_TokenInterface</classname> Interface implementiert.
  59. Ein Beispiel einer einfachen Callback Klasse:
  60. </para>
  61. <programlisting language="php"><![CDATA[
  62. class My_Markup_Renderer_Html_Upper extends Zend_Markup_Renderer_TokenConverterInterface
  63. {
  64. public function convert(Zend_Markup_Token $token, $text)
  65. {
  66. return '!up!' . strtoupper($text) . '!up!';
  67. }
  68. }
  69. ]]></programlisting>
  70. <para>
  71. Jetzt kann man das 'upper' Tag, mit einem Callback einer Instanz der Klasse
  72. <classname>My_Markup_Renderer_Html_Upper</classname> hinzufügen. Ein einfaches
  73. Beispiel:
  74. </para>
  75. <programlisting language="php"><![CDATA[
  76. // Erstellt eine Instanz von Zend_Markup_Renderer_Html,
  77. // mit Zend_Markup_Parser_BbCode als seinen Parser
  78. $bbcode = Zend_Markup::factory('Bbcode');
  79. // Das erstellt ein einfaches 'foo' Tag
  80. // Der erste Parameter definiert den Namen des Tags
  81. // Der zweite Parameter nimmt ein Integer welches den Tagtyp definiert
  82. // Der dritte Parameter ist ein Array welches andere Dinge über ein Tag
  83. // definiert, wie die Gruppe des Tags und (in diesem Fall) ein Start und Ende
  84. // Tag
  85. $bbcode->addTag(
  86. 'upper',
  87. Zend_Markup_Renderer_RendererAbstract::TYPE_REPLACE,
  88. array(
  89. 'callback' => new My_Markup_Renderer_Html_Upper(),
  90. 'group' => 'inline'
  91. )
  92. );
  93. // Jetzt wird die folgende Ausgabe erstellt: 'my !up!TAG!up!'
  94. echo $bbcode->render('my [upper]tag[/upper]');
  95. ]]></programlisting>
  96. </sect3>
  97. </sect2>
  98. <sect2 id="zend.markup.renderers.list">
  99. <title>Liste der Tags</title>
  100. <table id="zend.markup.renderers.list.tags">
  101. <title>Liste der Tags</title>
  102. <tgroup cols="2" align="left" colsep="1" rowsep="1">
  103. <thead>
  104. <row>
  105. <entry>Beispiel Eingabe (BBCode)</entry>
  106. <entry>Beispiel Ausgabe</entry>
  107. </row>
  108. </thead>
  109. <tbody>
  110. <row>
  111. <entry>[b]foo[/b]</entry>
  112. <entry><![CDATA[<strong>foo</strong>]]></entry>
  113. </row>
  114. <row>
  115. <entry>[i]foo[/i]</entry>
  116. <entry><![CDATA[<em>foo</em>]]></entry>
  117. </row>
  118. <row>
  119. <entry>[cite]foo[/cite]</entry>
  120. <entry><![CDATA[<cite>foo</cite>]]></entry>
  121. </row>
  122. <row>
  123. <entry>[del]foo[/del]</entry>
  124. <entry><![CDATA[<del>foo</del>]]></entry>
  125. </row>
  126. <row>
  127. <entry>[ins]foo[/ins]</entry>
  128. <entry><![CDATA[<ins>foo</ins>]]></entry>
  129. </row>
  130. <row>
  131. <entry>[sup]foo[/sup]</entry>
  132. <entry><![CDATA[<sup>foo</sup>]]></entry>
  133. </row>
  134. <row>
  135. <entry>[sub]foo[/sub]</entry>
  136. <entry><![CDATA[<sub>foo</sub>]]></entry>
  137. </row>
  138. <row>
  139. <entry>[span]foo[/span]</entry>
  140. <entry><![CDATA[<span>foo</span>]]></entry>
  141. </row>
  142. <row>
  143. <entry>[acronym title="PHP Hypertext Preprocessor]PHP[/acronym]</entry>
  144. <entry><![CDATA[<acronym title="PHP Hypertext Preprocessor">PHP</acronym>]]></entry>
  145. </row>
  146. <row>
  147. <entry>[url=http://framework.zend.com/]Zend Framework[/url]</entry>
  148. <entry><![CDATA[<a href="http://framework.zend.com/">Zend Framework</a>]]></entry>
  149. </row>
  150. <row>
  151. <entry>[h1]foobar[/h1]</entry>
  152. <entry><![CDATA[<h1>foobar</h1>]]></entry>
  153. </row>
  154. <row>
  155. <entry>[img]http://framework.zend.com/images/logo.gif[/img]</entry>
  156. <entry><![CDATA[<img src="http://framework.zend.com/images/logo.gif" />]]></entry>
  157. </row>
  158. </tbody>
  159. </tgroup>
  160. </table>
  161. </sect2>
  162. </sect1>