Zend_Markup-Renderers.xml 7.3 KB

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