| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201 |
- <?xml version="1.0" encoding="UTF-8"?>
- <!-- EN-Revision: 24548 -->
- <!-- Reviewed: no -->
- <sect1 id="zend.markup.renderers">
- <title>Moteurs de rendu Zend_Markup</title>
- <para>
- <classname>Zend_Markup</classname> est fournie avec un moteur de rendu, le
- <acronym>HTML</acronym>.
- </para>
- <sect2 id="zend.markup.renderers.add">
- <title>Ajouter vos propres markups</title>
- <para>
- En ajoutant vos markups, vous pouvez ajouter vos propres fonctionnalités aux moteurs
- de rendu de <classname>Zend_Markup</classname>. Grâce à la structure en markups, vous
- pouvez ajouter presque toutes les fonctionnalités que vous voulez, depuis des markups
- simples jusqu'à des structures de données complexes. Voici un exemple pour un markup
- simple 'foo' :
- </para>
- <programlisting language="php"><![CDATA[
- // Créer une instance de Zend_Markup_Renderer_Html,
- // avec Zend_Markup_Parser_BbCode comme analyseur
- $bbcode = Zend_Markup::factory('Bbcode');
- // Ceci va créer un markup simple 'foo'
- // Le premier paramètre définit le nom du markup
- // Le second param prend un entier qui définit le type de markup.
- // Le troisième param est un tableau qui définit d'autres caractéristiques
- // du markup comme son groupe et (dans ce cas) les markups de début et de fin
- $bbcode->addMarkup(
- 'foo',
- Zend_Markup_Renderer_RendererAbstract::TYPE_REPLACE,
- array(
- 'start' => '-bar-',
- 'end' => '-baz-',
- 'group' => 'inline'
- )
- );
- // La sortie sera: 'my -bar-markup-baz-'
- echo $bbcode->render('my [foo]markup[/foo]');
- ]]></programlisting>
- <para>
- Notez que créer vos propres markups n'est utile que si l'analyseur syntaxique en tient
- compte. Actuellement, seul BBCode supporte cela.
- </para>
- <para>
- Certains moteurs de rendu (comme le moteur <acronym>HTML</acronym>) supporte un
- paramètre nommé "markup". Cela remplace les paramètres "start" et "end", et il effectue
- le rendu du markup avec des attributs par défaut ainsi que le markup de fin.
- </para>
- <sect3 id="zend.markup.renderers.add.callback">
- <title>Ajout d'un markup de rappel(callback)</title>
- <para>
- Ajouter des markups de rappel permet de faire bien plus que de simples
- remplacements. Par exemple, vous pouvez changer le contenu, utiliser
- des paramètres pour changer la sortie, etc.
- </para>
- <para>
- Un rappel est une classe qui implémente
- <classname>Zend_Markup_Renderer_TokenInterface</classname>
- Voici un exemple de classe de markup de rappel :
- </para>
- <programlisting language="php"><![CDATA[
- class My_Markup_Renderer_Html_Upper
- implements Zend_Markup_Renderer_TokenConverterInterface
- {
- public function convert(Zend_Markup_Token $token, $text)
- {
- return '!up!' . strtoupper($text) . '!up!';
- }
- }
- ]]></programlisting>
- <para>
- Il est possible maintenant d'ajouter le markup "upper", avec comme fonction de
- rappel, une instance de <classname>My_Markup_Renderer_Html_Upper</classname>.
- Voici un exemple :
- </para>
- <programlisting language="php"><![CDATA[
- // Créer une instance de Zend_Markup_Renderer_Html,
- // avec Zend_Markup_Parser_BbCode comme analyseur
- $bbcode = Zend_Markup::factory('Bbcode');
- // Ceci va créer un markup simple 'foo'
- // Le premier paramètre définit le nom du markup
- // Le second param prend un entier qui définit le type de markup.
- // Le troisième param est un tableau qui définit d'autres caractéristiques
- // du markup comme son groupe et (dans ce cas) les markups de début et de fin
- $bbcode->addMarkup(
- 'upper',
- Zend_Markup_Renderer_RendererAbstract::TYPE_CALLBACK,
- array(
- 'callback' => new My_Markup_Renderer_Html_Upper(),
- 'group' => 'inline'
- )
- );
- // La sortie sera: 'my !up!MARKUP!up!'
- echo $bbcode->render('my [upper]markup[/upper]');
- ]]></programlisting>
- </sect3>
- </sect2>
- <sect2 id="zend.markup.renderers.list">
- <title>Liste de markups</title>
- <table id="zend.markup.renderers.list.tags">
- <title>Liste de markups</title>
- <tgroup cols="2" align="left" colsep="1" rowsep="1">
- <thead>
- <row>
- <entry>Entrée (bbcode)</entry>
- <entry>Sortie</entry>
- </row>
- </thead>
- <tbody>
- <row>
- <entry>[b]foo[/b]</entry>
- <entry><![CDATA[<strong>foo</strong>]]></entry>
- </row>
- <row>
- <entry>[i]foo[/i]</entry>
- <entry><![CDATA[<em>foo</em>]]></entry>
- </row>
- <row>
- <entry>[cite]foo[/cite]</entry>
- <entry><![CDATA[<cite>foo</cite>]]></entry>
- </row>
- <row>
- <entry>[del]foo[/del]</entry>
- <entry><![CDATA[<del>foo</del>]]></entry>
- </row>
- <row>
- <entry>[ins]foo[/ins]</entry>
- <entry><![CDATA[<ins>foo</ins>]]></entry>
- </row>
- <row>
- <entry>[sup]foo[/sup]</entry>
- <entry><![CDATA[<sup>foo</sup>]]></entry>
- </row>
- <row>
- <entry>[sub]foo[/sub]</entry>
- <entry><![CDATA[<sub>foo</sub>]]></entry>
- </row>
- <row>
- <entry>[span]foo[/span]</entry>
- <entry><![CDATA[<span>foo</span>]]></entry>
- </row>
- <row>
- <entry>[acronym title="PHP Hypertext Preprocessor]PHP[/acronym]</entry>
- <entry>
- <![CDATA[<acronym title="PHP Hypertext Preprocessor">PHP</acronym>]]>
- </entry>
- </row>
- <row>
- <entry>[url=http://framework.zend.com/]Zend Framework[/url]</entry>
- <entry>
- <![CDATA[<a href="http://framework.zend.com/">Zend Framework</a>]]>
- </entry>
- </row>
- <row>
- <entry>[h1]foobar[/h1]</entry>
- <entry><![CDATA[<h1>foobar</h1>]]></entry>
- </row>
- <row>
- <entry>[img]http://framework.zend.com/images/logo.gif[/img]</entry>
- <entry>
- <![CDATA[<img src="http://framework.zend.com/images/logo.gif" />]]>
- </entry>
- </row>
- </tbody>
- </tgroup>
- </table>
- </sect2>
- </sect1>
|