<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet title="XSL formatting" type="text/xsl" href="https://dotclear.watch/feed/rss2/xslt" ?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>DotclearWatch / Blog - Mot-clé - class</title>
    <link>https://dotclear.watch/</link>
    <atom:link href="https://dotclear.watch/feed/tag/class/rss2" rel="self" type="application/rss+xml" />
    <description>Suivez l'évolution du moteur de blogs Dotclear.</description>
    <language>fr</language>
    <pubDate>Mon, 11 May 2026 06:10:31 +0200</pubDate>
    <copyright>Tous droits réservés © Jean-Christian Denis</copyright>
    <docs>http://blogs.law.harvard.edu/tech/rss</docs>
    <generator>Dotclear</generator>
          <item>
        <title>Déplacement de classes</title>
        <link>https://dotclear.watch/Billet/D%C3%A9placement-de-classes-en-2.28</link>
        <guid isPermaLink="false">urn:md5:1638e8243b1372300dcc00498f457792</guid>
        <pubDate>Fri, 13 Oct 2023 08:00:00 +0200</pubDate>
        <dc:creator>Jean-Christian Denis</dc:creator>
                  <category>2.28</category>
                          <category>2.28</category>
                  <category>class</category>
                  <category>déplacé</category>
                <description>&lt;p&gt;La &lt;a href=&quot;https://dotclear.watch/Billet/Release-2.28&quot;&gt;version 2.28&lt;/a&gt; de Dotclear continuant la transition vers les espaces de noms PHP, la plupart des classes restantes dans le répertoire &lt;code&gt;inc&lt;/code&gt; a été déplacée vers le dossier &lt;code&gt;src&lt;/code&gt;.&lt;/p&gt; &lt;p&gt;Voici la liste des classes changeant de nom dans cette version.&lt;br /&gt;
&lt;br /&gt;&lt;/p&gt;

&lt;h5&gt;Frontend :&lt;/h5&gt;
&lt;pre&gt;
    &amp;#039;dcTemplate&amp;#039;    =&amp;gt; &amp;#039;Dotclear\Core\Frontend\Tpl&amp;#039;,
    &amp;#039;dcUrlHandlers&amp;#039; =&amp;gt; &amp;#039;Dotclear\Core\Frontend\Url&amp;#039;,
    &amp;#039;context&amp;#039;       =&amp;gt; &amp;#039;Dotclear\Core\Frontend\Ctx&amp;#039;,

    &amp;#039;rsExtPostPublic&amp;#039;    =&amp;gt; &amp;#039;Dotclear\Schema\Extension\PostPublic&amp;#039;,
    &amp;#039;rsExtCommentPublic&amp;#039; =&amp;gt; &amp;#039;Dotclear\Schema\Extension\CommentPublic&amp;#039;,
&lt;/pre&gt;

&lt;h5&gt;Core :&lt;/h5&gt;
&lt;pre&gt;
    &amp;#039;dcAuth&amp;#039; =&amp;gt; &amp;#039;Dotclear\Core\Auth&amp;#039;,
    &amp;#039;dcBlog&amp;#039; =&amp;gt; &amp;#039;Dotclear\Core\Blog&amp;#039;,
    &amp;#039;dcCategories&amp;#039;   =&amp;gt; &amp;#039;Dotclear\Core\Categories&amp;#039;,
    &amp;#039;dcDeprecated&amp;#039; =&amp;gt; &amp;#039;Dotclear\Core\Deprecated&amp;#039;,
    &amp;#039;dcError&amp;#039;        =&amp;gt; &amp;#039;Dotclear\Core\Error&amp;#039;,
    &amp;#039;dcLog&amp;#039;          =&amp;gt; &amp;#039;Dotclear\Core\Log&amp;#039;,
    &amp;#039;dcMedia&amp;#039;        =&amp;gt; &amp;#039;Dotclear\Core\Media&amp;#039;,
    &amp;#039;dcMeta&amp;#039;         =&amp;gt; &amp;#039;Dotclear\Core\Meta&amp;#039;,
    &amp;#039;dcModuleDefine&amp;#039; =&amp;gt; &amp;#039;Dotclear\Module\ModuleDefine&amp;#039;,
    &amp;#039;dcModules&amp;#039;      =&amp;gt; &amp;#039;Dotclear\Module\Modules&amp;#039;,
    &amp;#039;dcNamespace&amp;#039;    =&amp;gt; &amp;#039;Dotclear\Core\BlogWorkspace&amp;#039;,
    &amp;#039;dcNotices&amp;#039;      =&amp;gt; &amp;#039;Dotclear\Core\Notice&amp;#039;,
    &amp;#039;dcPlugins&amp;#039;   =&amp;gt; &amp;#039;Dotclear\Module\Plugins&amp;#039;,
    &amp;#039;dcPostMedia&amp;#039;    =&amp;gt; &amp;#039;Dotclear\Core\PostMedia&amp;#039;,
    &amp;#039;dcPrefs&amp;#039;        =&amp;gt; &amp;#039;Dotclear\Core\UserPreferences&amp;#039;,
    &amp;#039;dcRestServer&amp;#039;   =&amp;gt; &amp;#039;Dotclear\Core\Rest&amp;#039;,
    &amp;#039;dcSettings&amp;#039;     =&amp;gt; &amp;#039;Dotclear\Core\BlogSettings&amp;#039;,
    &amp;#039;dcStore&amp;#039;       =&amp;gt; &amp;#039;Dotclear\Module\Store&amp;#039;,
    &amp;#039;dcStoreParser&amp;#039; =&amp;gt; &amp;#039;Dotclear\Module\StoreParser&amp;#039;,
    &amp;#039;dcStoreReader&amp;#039; =&amp;gt; &amp;#039;Dotclear\Module\StoreReader&amp;#039;,
    &amp;#039;dcThemes&amp;#039;      =&amp;gt; &amp;#039;Dotclear\Module\Themes&amp;#039;,
    &amp;#039;dcTrackback&amp;#039;    =&amp;gt; &amp;#039;Dotclear\Core\Trackback&amp;#039;,
    &amp;#039;dcUpdate&amp;#039; =&amp;gt; &amp;#039;Dotclear\Core\Backend\Update&amp;#039;,
    &amp;#039;dcWorkspace&amp;#039;    =&amp;gt; &amp;#039;Dotclear\Core\UserWorkspace&amp;#039;,
    &amp;#039;dcXmlRpc&amp;#039; =&amp;gt; &amp;#039;Dotclear\Core\Frontend\XmlRpc&amp;#039;,

    &amp;#039;rsExtPost&amp;#039;    =&amp;gt; &amp;#039;Dotclear\Schema\Extension\Post&amp;#039;,
    &amp;#039;rsExtComment&amp;#039; =&amp;gt; &amp;#039;Dotclear\Schema\Extension\Comment&amp;#039;,
    &amp;#039;rsExtDates&amp;#039;   =&amp;gt; &amp;#039;Dotclear\Schema\Extension\Dates&amp;#039;,
    &amp;#039;rsExtUser&amp;#039;    =&amp;gt; &amp;#039;Dotclear\Schema\Extension\User&amp;#039;,
    &amp;#039;rsExtBlog&amp;#039;    =&amp;gt; &amp;#039;Dotclear\Schema\Extension\Blog&amp;#039;,

    &amp;#039;dcTraitDynamicProperties&amp;#039; =&amp;gt; &amp;#039;Dotclear\Helper\TraitDynamicProperties&amp;#039;,
&lt;/pre&gt;

&lt;h5&gt;Nouvelles classes ;&lt;/h5&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Dotclear\Core\Blogs&lt;/strong&gt; =&amp;gt; &lt;code&gt;App::blogs()&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Dotclear\Core\Cache&lt;/strong&gt; =&amp;gt; &lt;code&gt;App::cache()&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Dotclear\Core\Filter&lt;/strong&gt; =&amp;gt; &lt;code&gt;App::filter()&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Dotclear\Core\Formater&lt;/strong&gt; =&amp;gt; &lt;code&gt;App::formater()&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Dotclear\Core\Nonce&lt;/strong&gt; =&amp;gt; &lt;code&gt;App::nonce()&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Dotclear\Core\PostType&lt;/strong&gt; =&amp;gt; &lt;code&gt;new PostType(type, admin_url, public_url, label);&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Dotclear\Core\PostTypes&lt;/strong&gt; =&amp;gt; &lt;code&gt;App::postTypes()&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Dotclear\Core\Users&lt;/strong&gt; =&amp;gt; &lt;code&gt;App::users()&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Dotclear\Core\Version&lt;/strong&gt; =&amp;gt; &lt;code&gt;App::version()&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h5&gt;Plugins&lt;/h5&gt;

&lt;p&gt;Avec la nouvelle gestion des permissions des modules, leurs constantes se sont déplacées&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;initBlogroll::PERMISSION_BLOGROLL&lt;/strong&gt; =&amp;gt; &lt;code&gt;\Dotclear\Plugin\blogroll\Blogroll::PERMISSION_BLOGROLL&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;initBlogroll::LINK_TABLE_NAME&lt;/strong&gt; =&amp;gt; &lt;code&gt;\Dotclear\Plugin\blogroll\Blogroll::LINK_TABLE_NAME&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;initAntispam::SPAMRULE_TABLE_NAME&lt;/strong&gt; =&amp;gt; &lt;code&gt;\Dotclear\Plugin\antispam\Antispam::SPAMRULE_TABLE_NAME&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;initPages::PERMISSION_PAGES&lt;/strong&gt; =&amp;gt; &lt;code&gt;\Dotclear\Plugin\pages\Pages::PERMISSION_PAGES&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h5&gt;En savoir plus :&lt;/h5&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://dotclear.watch/Billet/Le-conteneur-principal-en-2.28&quot;&gt;Les classes de premiers niveau&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://dotclear.watch/Billet/D%C3%A9placement-de-classes&quot;&gt;Les classes déplacées en version 2.27&lt;/a&gt;.&lt;br /&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;br /&gt;
&lt;em&gt;&lt;q&gt;Le contenu de ce document a été écrit suivant le code de la version 2.28 de Dotclear.&lt;/q&gt;&lt;/em&gt;&lt;/p&gt;</description>
        
              </item>
          <item>
        <title>Déplacement de classes</title>
        <link>https://dotclear.watch/Billet/D%C3%A9placement-de-classes</link>
        <guid isPermaLink="false">urn:md5:39816fb224c63c01c4e6fcc0c7b0fea3</guid>
        <pubDate>Wed, 12 Jul 2023 20:10:00 +0100</pubDate>
        <dc:creator>Jean-Christian Denis</dc:creator>
                  <category>2.27</category>
                          <category>2.27</category>
                  <category>class</category>
                  <category>déplacé</category>
                <description>&lt;p&gt;Pour cette &lt;a href=&quot;https://dotclear.watch/Billet/Release-2.27&quot;&gt;version 2.27&lt;/a&gt;, continuant la transition vers les espaces de noms PHP, de nombreuses classes dont principalement celles d'administration se sont vues déplacer dans le dossier &lt;code&gt;src&lt;/code&gt;.&lt;/p&gt; &lt;p&gt;Voici la liste des classes changeant de nom dans cette version.&lt;br /&gt;
&lt;br /&gt;
Pour la partie administration :&lt;/p&gt;
&lt;pre&gt;
    &amp;#039;adminBlogFilter&amp;#039;      =&amp;gt; &amp;#039;Dotclear\Core\Backend\Filter\FilterBlogs&amp;#039;,
    &amp;#039;adminBlogList&amp;#039;        =&amp;gt; &amp;#039;Dotclear\Core\Backend\Listing\ListingBlogs&amp;#039;,
    &amp;#039;adminCommentFilter&amp;#039;   =&amp;gt; &amp;#039;Dotclear\Core\Backend\Filter\FilterComments&amp;#039;,
    &amp;#039;adminCommentList&amp;#039;     =&amp;gt; &amp;#039;Dotclear\Core\Backend\Listing\ListingComments&amp;#039;,
    &amp;#039;adminGenericFilterV2&amp;#039; =&amp;gt; &amp;#039;Dotclear\Core\Backend\Filter\Filters&amp;#039;,
    &amp;#039;adminGenericListV2&amp;#039;   =&amp;gt; &amp;#039;Dotclear\Core\Backend\Listing\Listing&amp;#039;,
    &amp;#039;adminMediaFilter&amp;#039;     =&amp;gt; &amp;#039;Dotclear\Core\Backend\Filter\FilterMedia&amp;#039;,
    &amp;#039;adminMediaList&amp;#039;       =&amp;gt; &amp;#039;Dotclear\Core\Backend\Listing\ListingMedia&amp;#039;,
    &amp;#039;adminMediaPage&amp;#039;       =&amp;gt; &amp;#039;Dotclear\Core\Backend\MediaPage&amp;#039;,
    &amp;#039;adminModulesList&amp;#039;     =&amp;gt; &amp;#039;Dotclear\Core\Backend\ModulesList&amp;#039;,
    &amp;#039;adminPostFilter&amp;#039;      =&amp;gt; &amp;#039;Dotclear\Core\Backend\Filter\FilterPosts&amp;#039;,
    &amp;#039;adminPostList&amp;#039;        =&amp;gt; &amp;#039;Dotclear\Core\Backend\Listing\ListingPosts&amp;#039;,
    &amp;#039;adminPostMiniList&amp;#039;    =&amp;gt; &amp;#039;Dotclear\Core\Backend\Listing\ListingPostsMini&amp;#039;,
    &amp;#039;adminUserFilter&amp;#039;      =&amp;gt; &amp;#039;Dotclear\Core\Backend\Filter\FilterUsers&amp;#039;,
    &amp;#039;adminUserList&amp;#039;        =&amp;gt; &amp;#039;Dotclear\Core\Backend\Listing\ListingUsers&amp;#039;,
    &amp;#039;adminThemesList&amp;#039;      =&amp;gt; &amp;#039;Dotclear\Core\Backend\ThemesList&amp;#039;,
    &amp;#039;adminUserPref&amp;#039;        =&amp;gt; &amp;#039;Dotclear\Core\Backend\UserPref&amp;#039;,
    &amp;#039;dcActions&amp;#039;            =&amp;gt; &amp;#039;Dotclear\Core\Backend\Action\Actions&amp;#039;,
    &amp;#039;dcAdmin&amp;#039;              =&amp;gt; &amp;#039;Dotclear\Core\Backend\Utility&amp;#039;,
    &amp;#039;dcAdminBlogPref&amp;#039;      =&amp;gt; &amp;#039;Dotclear\Core\Backend\BlogPref&amp;#039;,
    &amp;#039;dcAdminCombos&amp;#039;        =&amp;gt; &amp;#039;Dotclear\Core\Backend\Combos&amp;#039;,
    &amp;#039;dcAdminFilter&amp;#039;        =&amp;gt; &amp;#039;Dotclear\Core\Backend\Filter\Filter&amp;#039;,
    &amp;#039;dcAdminFilters&amp;#039;       =&amp;gt; &amp;#039;Dotclear\Core\Backend\Filter\FiltersLibrary&amp;#039;,
    &amp;#039;dcAdminHelper&amp;#039;        =&amp;gt; &amp;#039;Dotclear\Core\Backend\Helper&amp;#039;,
    &amp;#039;dcAdminNotices&amp;#039;       =&amp;gt; &amp;#039;Dotclear\Core\Backend\Notices&amp;#039;,
    &amp;#039;dcAdminURL&amp;#039;           =&amp;gt; &amp;#039;Dotclear\Core\Backend\Url&amp;#039;,
    &amp;#039;dcBlogsActions&amp;#039;       =&amp;gt; &amp;#039;Dotclear\Core\Backend\Action\ActionsBlogs&amp;#039;,
    &amp;#039;dcCommentsActions&amp;#039;    =&amp;gt; &amp;#039;Dotclear\Core\Backend\Action\ActionsComments&amp;#039;,
    &amp;#039;dcPostsActions&amp;#039;       =&amp;gt; &amp;#039;Dotclear\Core\Backend\Action\ActionsPosts&amp;#039;,
    &amp;#039;dcFavorites&amp;#039;          =&amp;gt; &amp;#039;Dotclear\Core\Backend\Favorites&amp;#039;,
    &amp;#039;dcMenu&amp;#039;               =&amp;gt; &amp;#039;Dotclear\Core\Backend\Menu&amp;#039;,
    &amp;#039;dcPage&amp;#039;               =&amp;gt; &amp;#039;Dotclear\Core\Backend\Page&amp;#039;,
    &amp;#039;dcPager&amp;#039;              =&amp;gt; &amp;#039;Dotclear\Core\Backend\Listing\Pager&amp;#039;,
    &amp;#039;dcThemeConfig&amp;#039;        =&amp;gt; &amp;#039;Dotclear\Core\Backend\ThemeConfig&amp;#039;,
&lt;/pre&gt;

&lt;p&gt;Pour la partie publique :&lt;/p&gt;
&lt;pre&gt;
    &amp;#039;dcPublic&amp;#039; =&amp;gt; &amp;#039;Dotclear\Core\Frontend\Utility&amp;#039;,
&lt;/pre&gt;

&lt;p&gt;Pour la partie Core :&lt;/p&gt;
&lt;pre&gt;
    &amp;#039;dcNsProcess&amp;#039; =&amp;gt; &amp;#039;Dotclear\Core\Process&amp;#039;,
    &amp;#039;dcUpgrade&amp;#039; =&amp;gt; &amp;#039;Dotclear\Core\Upgrade\Upgrade&amp;#039;,
&lt;/pre&gt;

&lt;p&gt;Pour utiliser ces classes il faut ajouter en début de fichier la déclaration &lt;code&gt;use&lt;/code&gt; suivi du  nom &lt;strong&gt;complet&lt;/strong&gt; de la classe.&lt;br /&gt;
Par exemple :&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-php&quot;&gt;&amp;lt;?php
use Dotclear\Core\Backend\Notices;

// dcAdminNotices::addSuccessNotice(__(&amp;#039;Youhou&amp;#039;));
Notices::addSuccessNotice(__(&amp;#039;Youhou&amp;#039;));&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;&lt;br /&gt;
&lt;em&gt;&lt;q&gt;Le contenu de ce document a été écrit suivant le code de la version 2.27 de Dotclear.&lt;/q&gt;&lt;/em&gt;&lt;/p&gt;</description>
        
              </item>
          <item>
        <title>La class Process</title>
        <link>https://dotclear.watch/Billet/La-class-Process</link>
        <guid isPermaLink="false">urn:md5:c7e57bde7d87b749d5506bb78759ec9a</guid>
        <pubDate>Tue, 11 Jul 2023 20:41:00 +0100</pubDate>
        <dc:creator>Jean-Christian Denis</dc:creator>
                  <category>2.27</category>
                          <category>2.27</category>
                  <category>class</category>
                  <category>module</category>
                  <category>plugin</category>
                  <category>process</category>
                  <category>theme</category>
                <description>&lt;p&gt;La classe &lt;strong&gt;Process&lt;/strong&gt; introduite dans les dernières versions de Dotclear devient la norme et est requise quasi partout depuis &lt;a href=&quot;https://dotclear.watch/Billet/Release-2.27&quot; hreflang=&quot;fr&quot; title=&quot;Note de release 2.27&quot;&gt;Dotclear 2.27&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;La plupart des classes de plugins et thèmes doivent étendre la classe Process, pour cela il suffit de déclarer son utilisation en début de fichier puis d'étendre votre classe.&lt;br /&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-php&quot;&gt;&amp;lt;?php
use Dotclear\Core\Process;

class Manage extends Process
{
}&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Cette classe est pour l'instant très succincte mais permet de découper le déroulement du script en trois parties.&lt;br /&gt;&lt;/p&gt;

&lt;h5&gt;Première partie&lt;/h5&gt;

&lt;p&gt;Elle utilise la méthode &lt;code&gt;Process::init()&lt;/code&gt; elle permet de vérifier les droits à utiliser votre classe. Elle utilise un mécanisme mémorisant le statut de cette initialisation, verrouillant ou non l'utilisation des méthodes suivantes.&lt;br /&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-php&quot;&gt;public static function init(): bool
{
    // On enregistre la permissions d&amp;#039;utiliser la classe et on renvoie le résultat
    return self::status(My::checkContext(My::MANAGE));
}&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;On voit ici l'utilisation de la &lt;a href=&quot;https://dotclear.watch/Billet/Les-classes-de-module-My&quot;&gt;classe My&lt;/a&gt; qui est un outil d'aide à l'écriture des modules simplifiant l'utilisation de certains mécanismes.&lt;br /&gt;&lt;/p&gt;

&lt;h5&gt;Seconde partie&lt;/h5&gt;

&lt;p&gt;Elle utilise la méthode &lt;code&gt;Process::process()&lt;/code&gt; qui est consacrée à la préparation et au traitement des données, telles que celles des formulaires par exemple.&lt;br /&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-php&quot;&gt;public static function process(): bool
{
    // On vérifie le droit d&amp;#039;effectuer cette partie
    if (!self::status()) {
        return false;
    }

    if (!empty($_POST[&amp;#039;id&amp;#039;])) {
        // traitement de mon formulaire

        // On a réussi, on ajoute un message
        Notices::addSuccessNotice(__(&amp;#039;Victory&amp;#039;));
        // On redirige vers la page du plugin
        dcCore::-&amp;gt;admin-&amp;gt;url-&amp;gt;redirect(&amp;#039;admin.plugin.&amp;#039; . My::id());
    }

    // Cette méthode doit retourner true si on veut exécuter la troisième partie
    return true;
}&lt;/code&gt;&lt;/pre&gt;

&lt;h5&gt;La troisième partie&lt;/h5&gt;

&lt;p&gt;Elle utilise la méthode &lt;code&gt;Process::render()&lt;/code&gt; qui est consacré au rendu. C'est à dire à l'affichage dans le navigateur.&lt;br /&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-php&quot;&gt;public static function render(): void
{
    // On vérifie le droit d&amp;#039;effectuer cette partie
    if (!self::status()) {
        return;
    }

    // On prépare l&amp;#039;affichage du haut de page
    Page::openModule(My::name());

    // On ajoute le menu façon Dotclear
    echo
    Page::breadcrumb(
        [
            __(&amp;#039;Plugin&amp;#039;)  =&amp;gt; &amp;#039;&amp;#039;,
            My::name() =&amp;gt; &amp;#039;&amp;#039;,
        ]
    ) .
    // On affiche d&amp;#039;éventuelle messages
    Notices::getNotices();

    // On ajoute le contenu de la page
    echo __(&amp;#039;yeah!&amp;#039;);

    // On ajoute l&amp;#039;aide de la page
    Page::helpBlock(My::id());

    // On ferme la page
    Page::closeModule();
}&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Ici on voit l'utilisation des classes d'outils My et Page qui vont grandement faciliter l'écriture des plugins et thèmes.&lt;br /&gt;
&lt;br /&gt;
A noter que seule la première méthode &lt;strong&gt;init()&lt;/strong&gt; est obligatoire. Si elle renvoie &lt;strong&gt;true&lt;/strong&gt;, c'est que la classe ne contient pas de méthode &lt;strong&gt;process()&lt;/strong&gt;, la méthode &lt;strong&gt;render()&lt;/strong&gt; sera exécuté.&lt;br /&gt;
&lt;br /&gt;
&lt;em&gt;&lt;q&gt;Le contenu de ce document a été écrit suivant le code de la version 2.27 de Dotclear.&lt;/q&gt;&lt;/em&gt;&lt;/p&gt;</description>
        
              </item>
      </channel>
</rss>
