Différences

Cette page vous affiche les différences entre la révision choisie et la version actuelle de la page.

Lien vers cette vue comparative

2.0:resources:plugins:public [2009/06/17 19:08]
Moe utilisation de la balise <code> pour éviter que {{tpl:Public}} soit interprété par le wiki
2.0:resources:plugins:public [2013/10/16 09:56] (Version actuelle)
Ligne 1: Ligne 1:
-====== Création d'une page sur le blog ======+FIXME
  
-Après avoir découvert comment [[.:​tutorial#​premier-plugin|créer un plugin]], voyons comment créer une page //​interactive//​ sur un blog. Nous allons créer un plugin ''​Public''​ en plaçant les fichiers suivants dans un répertoire appelé ''/​public/''​.+À effacer.
  
-===== Le fichier _define.php ===== +Voir [[.:​public-page|public-page]].
- +
-<code php> +
-<?php +
-if (!defined('​DC_RC_PATH'​)) {return;} +
- +
-$this->​registerModule( +
- /* Name */​ '​Public',​ +
- /* Description */​ '​Public',​ +
- /* Author */​ '​Dotclear Documentation',​ +
- /* Version */​ '​0.1',​ +
- /* Permissions */​ '​usage,​contentadmin'​ +
-); +
-?> +
-</​code>​ +
- +
-===== Le fichier _prepend.php ===== +
- +
-On enregistre l'URL dans le fichier ''​_prepend.php'' ​: +
-<code php> +
-# enregistrer l'URL "public+
-$core->​url->​register('​public','​public',​ +
- '​^public(?:/​(.+))?​$',​array('​publicDocument','​page')); +
-</​code>​ +
- +
-Paramètres de la fonction register : +
-  - le type d'URL, utilisé par Dotclear pour l'​identifier +
-  - l'URL de base de la page +
-  - l'​expression régulière de l'URL de la page +
-  - un //​callback//,​ un nom de fonction ou un tableau avec le nom d'une classe et d'une fonction à appeler lorsque cette URL est demandée +
- +
-Pour accéder à cette URL, quel que soit le contexte, on utilise ce code : +
- +
-<code php>​$core->​blog->​url.$core->​url->​getBase('​public'​)</​code>​ +
- +
-''​public''​ est l'​identifiant de l'​URL. +
- +
-===== Le fichier _public.php ===== +
- +
-==== Création de la page ==== +
- +
-L'URL "​public"​ que l'on a enregistrée dans le fichier ''​_prepend.php''​ appelle la fonction ''​page()''​ de la classe ''​publicDocument''​. Cette fonction reçoit un paramètre, il correspond à l'​expression régulière de l'URL de la page, ici ''​^public(?:/​(.+))?''​ sélectionne le texte après ''​public/''​ s'il existe. Le plugin affichera un message différent si on demande l'URL "​public/​hello"​. +
- +
-<code php> +
-class publicDocument extends dcUrlHandlers +
-+
- public static function page($args) +
-+
- global $core; +
-  +
- # $_ctx est le contexte, on y insère ce que l'on veut +
- $_ctx =& $GLOBALS['​_ctx'​];​ +
-  +
- # si l'URL est "public/​lorem"​ +
- if ($args == '​lorem'​) +
-+
- $_ctx->public = __('​Lorem ipstum'​);​ +
-+
- # sinon, si l'URL est "​public"​ +
- else +
-+
- $_ctx->​public = __('​Public'​);​ +
-+
-  +
- # enregistrer le répertoire qui contient le fichier template par défaut, +
- # le fichier public.html +
- $core->​tpl->​setPath($core->​tpl->​getPath(),​ +
- dirname(__FILE__).'/​default-templates/'​);​ +
-  +
- self::​serveDocument('​public.html','​text/​html'​);​ +
-+
-+
-</​code>​ +
- +
-La variable ''​$_ctx->​public''​ est définie en fonction de la valeur de ''​$args'',​ elle sera utilisée plus tard. +
- +
-==== Déclaration de la balise ==== +
- +
-Voir la [[..:tpl|page spécifique]] pour plus d'​informations. +
- +
-<code php> +
-# enregistrer la balise {{tpl:​Public}} +
-$core->​tpl->​addValue('​PublicValue',​array('​publicTpl','​PublicValue'​));​ +
- +
-class publicTpl +
-+
- public static function PublicValue() +
-+
- return('<?​php echo($_ctx->​public);​ ?>'​);​ +
-+
-+
-</​code>​ +
- +
-===== Le fichier de template ===== +
- +
-Situé dans le répertoire ''​default-templates'',​ le fichier de template est appelé public.html et il contient ceci : +
- +
-<code html> +
-<​!DOCTYPE html PUBLIC "​-//​W3C//​DTD XHTML 1.0 Strict//​EN"​ +
-"​http://​www.w3.org/​TR/​xhtml1/​DTD/​xhtml1-strict.dtd">​ +
-<html xmlns="​http://​www.w3.org/​1999/​xhtml"​ xml:​lang="​{{tpl:​BlogLanguage}}"​ lang="​{{tpl:​BlogLanguage}}">​ +
-<​head>​ +
-  <meta http-equiv="​Content-Type"​ content="​text/​html;​ charset=UTF-8"​ /> +
-  <meta name="​MSSmartTagsPreventParsing"​ content="​TRUE"​ /> +
-   +
-  <​title>​{{tpl:​lang Public}} - {{tpl:​BlogName encode_html="​1"​}}</​title>​ +
-   +
-  {{tpl:​include src="​_head.html"​}} +
-</​head>​ +
- +
-<body class="​dc-Public">​ +
-<div id="​page">​ +
-{{tpl:​include src="​_top.html"​}} +
- +
-<div id="​wrapper">​ +
- +
-<div id="​main">​ +
-  <div id="​content">​ +
-   +
-  <div id="​content-info">​ +
-    <​h2>​{{tpl:​lang Public}}</​h2>​ +
-  </​div>​ +
-   +
-  <div class="​content-inner"> ​  +
-  <​p>​{{tpl:​PublicValue}}</​p>​ +
-  </​div>​ +
-   +
-  </​div>​ +
-</​div>​ <!-- End #main --> +
- +
-<div id="​sidebar">​ +
-  <div id="​blognav">​ +
-    {{tpl:​Widgets type="​nav"​}} +
-  </​div>​ <!-- End #blognav --> +
-   +
-  <div id="​blogextra">​ +
-    {{tpl:​Widgets type="​extra"​}} +
-  </​div>​ <!-- End #blogextra --> +
-</​div>​ +
- +
-</​div>​ <!-- End #wrapper --> +
- +
-{{tpl:​include src="​_footer.html"​}} +
-</​div>​ <!-- End #page --> +
-</​body>​ +
-</​html>​ +
-</​code>​ +
- +
-Il utilise la balise <code tpl>​{{tpl:​Public}}</​code>​ déclarée dans le fichier _public.php.+

Wiki powered by Dokuwiki.