Outils pour utilisateurs

Outils du site


lumo:creation_plugin_dokuwiki_namespacelogo:accueil

Ceci est une ancienne révision du document !


Création plugin Dokuwiki namespace_logo


retour

plugin.info.txt

base   namespacelogo
author Votrenom
email  votre@email.com
date   2026-03-16
name   Namespace Logo
desc   Affiche un logo spécifique par namespace

action.php

<?php
/**
 * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
 * @author     Votrenom
 */
 
class action_plugin_namespacelogo extends DokuWiki_Action_Plugin {
 
    /**
     * Enregistrer les hooks
     */
    public function register(Doku_Event_Handler $controller) {
        // Intercepter le rendu de l'en-tête du template
        $controller->register_hook('TPL_HEADER_OUTPUT', 'BEFORE', $this, '_injectNamespaceLogo');
    }
 
    /**
     * Injecter le logo du namespace dans l'en-tête
     */
    public function _injectNamespaceLogo(Doku_Event $event, $param) {
        global $ID;
 
        // Récupérer le namespace actuel
        $ns = getNS($ID);
 
        // Si pas de namespace (racine), on utilise le logo global
        if (empty($ns)) {
            return;
        }
 
        // Chemin vers le logo dans le namespace
        $logoPath = ':' . $ns . ':logo.png';
 
        // Vérifier si le fichier existe dans le Media Manager
        if (@media_exists($logoPath)) {
            // Générer l'URL de l'image
            $imgUrl = ml($logoPath);
 
            // Créer le HTML du logo
            $logoHtml = '<div class="ns-logo-container">' .
                        '<img src="' . $imgUrl . '" ' .
                        'alt="Logo ' . hsc($ns) . '" ' .
                        'class="ns-logo" ' .
                        'id="namespace-logo" />' .
                        '</div>';
 
            // Ajouter à la variable globale que le template pourra utiliser
            $GLOBALS['NS_LOGO_HTML'] = $logoHtml;
        }
    }
}

helper.php

<?php

class helper_plugin_namespacelogo extends DokuWiki_Plugin {

  /**
   * Obtenir le logo du namespace actuel
   * @return string|null HTML du logo ou null si aucun logo trouvé
   */
  public function getNamespaceLogo() {
      global $ID;
      
      $ns = getNS($ID);
      
      if (empty($ns)) {
          return null;
      }
      
      $logoPath = ':' . $ns . ':logo.png';
      
      if (@media_exists($logoPath)) {
          $imgUrl = ml($logoPath);
          return '<img src="' . $imgUrl . '" alt="Logo ' . hsc($ns) . '" class="ns-logo" />';
      }
      
      return null;
  }
  /**
   * Vérifier si un logo existe pour un namespace donné
   * @param string $ns Namespace à vérifier
   * @return bool
   */
  public function hasLogo($ns) {
      $logoPath = ':' . $ns . ':logo.png';
      return @media_exists($logoPath);
  }

}

lumo/creation_plugin_dokuwiki_namespacelogo/accueil.1773681664.txt.gz · Dernière modification : de estro

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki