Zend_Markup-Renderers.xml 6.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!-- EN-Revision: 20827 -->
  3. <!-- Reviewed: no -->
  4. <sect1 id="zend.markup.renderers">
  5. <title>Moteurs de rendu Zend_Markup</title>
  6. <para>
  7. <classname>Zend_Markup</classname> est fournie avec un moteur de rendu, le
  8. <acronym>HTML</acronym>.
  9. </para>
  10. <sect2 id="zend.markup.renderers.add">
  11. <title>Ajouter vos propres tags</title>
  12. <para>
  13. En ajoutant vos tags, vous pouvez ajouter vos propres fonctionnalités aux moteurs
  14. de rendu de <classname>Zend_Markup</classname>. Grâce à la structure en tags, vous pouvez
  15. ajouter presque toutes les fonctionnalités que vous voulez, depuis des tags simples jusqu'à
  16. des structures de données complexes. Voici un exemple pour un tag simple 'foo':
  17. </para>
  18. <programlisting language="php"><![CDATA[
  19. // Créer une instance de Zend_Markup_Renderer_Html,
  20. // avec Zend_Markup_Parser_BbCode comme analyseur
  21. $bbcode = Zend_Markup::factory('Bbcode');
  22. // Ceci va créer un tag simple 'foo'
  23. // Le premier paramètre définit le nom du tag
  24. // Le second param prend un entier qui définit le type de tag.
  25. // Le troisième param est un tableau qui définit d'autres caractéristiques
  26. // du tag comme son groupe et (dans ce cas) les tags de début et de fin
  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. // La sortie sera: 'my -bar-tag-baz-'
  37. echo $bbcode->render('my [foo]tag[/foo]');
  38. ]]></programlisting>
  39. <para>
  40. Notez que créer vos propres tags n'est utile que si l'analyseur syntaxique en tient compte.
  41. Actuellement, seul BBCode supporte cela. Textile ne supporte pas les tags personnalisés.
  42. </para>
  43. <para>
  44. Certains moteurs de rendu (comme le moteur HTML) supporte un paramètre nommé 'tag'.
  45. Cela remplace les paramètres 'start' et 'end', et il rend le tag avec des attributs
  46. par défaut ainsi que le tag de fin.
  47. </para>
  48. <sect3 id="zend.markup.renderers.add.callback">
  49. <title>Ajout d'un tag de rappel(callback)</title>
  50. <para>
  51. Ajouter des tags de rappel permet de faire bien plus que de simples
  52. remplacements. Par exemple, vous pouvez changer le contenu, utiliser
  53. des paramètres pour changer la sortie, etc.
  54. </para>
  55. <para>
  56. Un rappel est une classe qui implémente
  57. <classname>Zend_Markup_Renderer_TokenInterface</classname>
  58. Voici un exemple de classe de tag de rappel:
  59. </para>
  60. <programlisting language="php"><![CDATA[
  61. class My_Markup_Renderer_Html_Upper extends Zend_Markup_Renderer_TokenConverterInterface
  62. {
  63. public function convert(Zend_Markup_Token $token, $text)
  64. {
  65. return '!up!' . strtoupper($text) . '!up!';
  66. }
  67. }
  68. ]]></programlisting>
  69. <para>
  70. Il est possible maintenant d'ajouter le tag 'upper', avec comme fonction de rappel,
  71. une instance de <classname>My_Markup_Renderer_Html_Upper</classname>.
  72. Voici un exemple:
  73. </para>
  74. <programlisting language="php"><![CDATA[
  75. // Créer une instance de Zend_Markup_Renderer_Html,
  76. // avec Zend_Markup_Parser_BbCode comme analyseur
  77. $bbcode = Zend_Markup::factory('Bbcode');
  78. // Ceci va créer un tag simple 'foo'
  79. // Le premier paramètre définit le nom du tag
  80. // Le second param prend un entier qui définit le type de tag.
  81. // Le troisième param est un tableau qui définit d'autres caractéristiques
  82. // du tag comme son groupe et (dans ce cas) les tags de début et de fin
  83. $bbcode->addTag(
  84. 'upper',
  85. Zend_Markup_Renderer_RendererAbstract::TYPE_REPLACE,
  86. array(
  87. 'callback' => new My_Markup_Renderer_Html_Upper(),
  88. 'group' => 'inline'
  89. )
  90. );
  91. // La sortie sera: 'my !up!TAG!up!'
  92. echo $bbcode->render('my [upper]tag[/upper]');
  93. ]]></programlisting>
  94. </sect3>
  95. </sect2>
  96. <sect2 id="zend.markup.renderers.list">
  97. <title>Liste de tags</title>
  98. <table id="zend.markup.renderers.list.tags">
  99. <title>Liste de tags</title>
  100. <tgroup cols="2" align="left" colsep="1" rowsep="1">
  101. <thead>
  102. <row>
  103. <entry>Entrée (bbcode)</entry>
  104. <entry>Sortie</entry>
  105. </row>
  106. </thead>
  107. <tbody>
  108. <row>
  109. <entry>[b]foo[/b]</entry>
  110. <entry><![CDATA[<strong>foo</strong>]]></entry>
  111. </row>
  112. <row>
  113. <entry>[i]foo[/i]</entry>
  114. <entry><![CDATA[<em>foo</em>]]></entry>
  115. </row>
  116. <row>
  117. <entry>[cite]foo[/cite]</entry>
  118. <entry><![CDATA[<cite>foo</cite>]]></entry>
  119. </row>
  120. <row>
  121. <entry>[del]foo[/del]</entry>
  122. <entry><![CDATA[<del>foo</del>]]></entry>
  123. </row>
  124. <row>
  125. <entry>[ins]foo[/ins]</entry>
  126. <entry><![CDATA[<ins>foo</ins>]]></entry>
  127. </row>
  128. <row>
  129. <entry>[sup]foo[/sup]</entry>
  130. <entry><![CDATA[<sup>foo</sup>]]></entry>
  131. </row>
  132. <row>
  133. <entry>[sub]foo[/sub]</entry>
  134. <entry><![CDATA[<sub>foo</sub>]]></entry>
  135. </row>
  136. <row>
  137. <entry>[span]foo[/span]</entry>
  138. <entry><![CDATA[<span>foo</span>]]></entry>
  139. </row>
  140. <row>
  141. <entry>[acronym title="PHP Hypertext Preprocessor]PHP[/acronym]</entry>
  142. <entry><![CDATA[<acronym title="PHP Hypertext Preprocessor">PHP</acronym>]]></entry>
  143. </row>
  144. <row>
  145. <entry>[url=http://framework.zend.com/]Zend Framework[/url]</entry>
  146. <entry><![CDATA[<a href="http://framework.zend.com/">Zend Framework</a>]]></entry>
  147. </row>
  148. <row>
  149. <entry>[h1]foobar[/h1]</entry>
  150. <entry><![CDATA[<h1>foobar</h1>]]></entry>
  151. </row>
  152. <row>
  153. <entry>[img]http://framework.zend.com/images/logo.gif[/img]</entry>
  154. <entry><![CDATA[<img src="http://framework.zend.com/images/logo.gif" />]]></entry>
  155. </row>
  156. </tbody>
  157. </tgroup>
  158. </table>
  159. </sect2>
  160. </sect1>