Gestion des nœuds du plan du site

Un article de OviWiki.


Sommaire

Structure du plan

Dans le plan du site, tout les nœuds ont un identifiant unique

les noeuds principaux sont des identifiants de délégation, par exemple sur un site avec une seule délégation on aura à la racine du plan du site :

  • DGAll : branche contenant les nœuds toutes délégations confondues
  • DG0 : branche contenant les nœuds hors délégation
  • DG1 : branche contenant les nœuds de la première délégation

exemple de structure du plan du site pour le lien publication de la section utilisateur :

  • root
    • DGAll
      • babUser
        • babUserSection
          • babUserPublication
    • DG0
      • babDG0User
        • babDG0UserSection
          • babDG0UserPublication


Ajouter des nœuds dans le plan du site pour un module

Il faut s'enregistrer sur l'événement bab_eventBeforeSiteMapCreated qui permet d'être appelé avant la création du plan du site.


Méthodes de l'événement du plan de site

createItem($uid)

La méthode createItem permet de créer un instance de l'objet bab_siteMap_buildItem, c'est l'objet utilisé lors de la création d'un nœud du plan du site.

addFolder($item)

Permet d'ajouter un nœud sur le plan de site qui sera considéré comme un répertoire (des enfants pourrons lui être ajoutés)


addFunction($item)

Permet d'ajouter un nœud sur le plan de site qui sera considéré comme une fonction, il ne pourra pas avoir de nœuds enfants


Exemple

Créer un nœud dans toutes les branches de délégation :

$delegations = bab_getUserVisiblesDelegations();
 
foreach($delegations as $id_delegation => $deleg) {
 
	$core_prefix = false === $deleg['id'] ? 'bab' : 'babDG'.$deleg['id'];
	$addon_prefix = false === $deleg['id'] ? 'MyCustomAddon' : 'MyCustomAddonDG'.$deleg['id'];
 
	$link = $event->createItem($addon_prefix.'Articles');
	$link->setLabel('les articles de mon module');
	$link->setLink('?tg=addon/MyCustomAddon/articles');
	$link->setPosition(array('root', $id_delegation, $core_prefix.'User', $core_prefix.'UserSectionAddons'));
	$event->addFunction($link);
}

les méthodes de bab_siteMap_buildItem

setLabel($label)

Le libellé du lien ou du nœud si c'est un nœud non-cliquable. Le contenu doit être du texte brut

setDescription($description)

La description du nœud. dans le cas d'un menu, cette description pourra être utilisée en infobulle. Le contenu doit être du texte brut

setLink($href, $onclick = '')

Permet de définir le lien du nœud cliquable, il est possible de passer en deuxième paramètre en fonction javascript qui sera appelé sur l'évènement javascript "click"

setPosition($position)

Permet de définir la position du nœud dans l'arbre. Le paramètre doit être un tableau contenant tout les parents du nœud.

exemple :

$item->setPosition(array('root', 'DGAll'));

addIconClassname($classname)

Permet de définir un nom de classe d'icône sur le nœud du plan de site. La classe sera utilisée ensuite par le Thème d'icônes si le skin du site utilise les classes fournies par le plan du site pour présenter des icônes associées aux fonctions d'Ovidentia.