Utiliser le système de pages de Frog CMS

mercredi 20 mai 2009, par Aris Papathéodorou

Contrairement à de nombreux systèmes de publication très structurés et structurants, Frog CMS n’a ni rubriques, ni mots-clefs, mais se fonde sur un principe unique de pages. Celles-ci s’organisent par contre de façon hiérarchiques, sans limitation de niveaux. Ce qui s’avère à l’usage d’une grande souplesse et d’une grande maniabilité.

En d’autres termes, il y a des pages principales, ou parentes (à la « racine » en quelque sorte), qui donnent la structure du site, puis des pages secondaires (childs) qui dépendent hiérarchiquement d’une pages principales, et dont peuvent éventuellement dépendre d’autres pages (grandchildren), et ainsi de suite.

Autre notion importante : pour Frog CMS, une page peut contenir du contenu (texte, images, etc. comme dans n’importe quel CMS), mais aussi directement du code PHP qui sera exécuté... C’est d’ailleurs l’une des fonctionnalité puissante de notre grenouille.

Créer une page

Pour créer une nouvelle page, il y a deux possibilités :

  • Cliquer sur le menu « Nouvelle page » à droite, compléter toutes les informations nécessaires (titre, contenu, tags, etc.), puis enregistrer.
  • Cliquer sur la petite icone verte « Plus » sur la page de l’interface d’admin (backend) qui liste les pages existantes.

That’s all Folk ! On ne peut plus simple.

Le statut des pages

Au moment de leur création, les pages se voient attribuer un statut

Brouillon (Draft)

  1. constant = Page::STATUS_DRAFT

La page est enregistrée mais n’apparaît pas sur le site public.

  1. Il n’est PAS possible de la lister via $this->children()
  2. Elle ne sera PAS trouvée par $this->find('is_url')
  3. Il n’est PAS possible d’y accéder directement par son URL

Publiée (Published)

  1. constant = Page::STATUS_PUBLISHED

La page est publiée, elle apparaît dans l’arboressence du site.

  1. Elle sera listée par $this->children()
  2. Elle sera trouvée par $this->find('is_url')
  3. Il est possible d’y accéder directement par son URL

Révisée (Reviewed)

  1. constant = Page::STATUS_REVIEWED

Ce statut permet de donner à une page le statut particulier de « page mise-à-jour ». Pour l’utiliser dans l’affichage public il faut alors coder une condition particulière :

  1. array('where' => 'status_id = '.Page::STATUS_REVIEWED')

De cette façon il est possible d’afficher uniquement les pages mises à jour.

  1. Elle ne sera PAS listée par $this->children()
  2. Elle sera trouvée par $this->find('is_url')
  3. Il est possible d’y accéder directement par son URL

Cachée (Hidden)

  1. constant = Page::STATUS_HIDDEN

Ce statut sert à créer une page que l’on ne veut pas voir apparaître directement dans l’arborescence du site parce que ce n’est pas sa raison d’être (RSS, plan du site, page d’erreur 404, etc.). c’est aussi un bon moyen pour prévisualiser une page avant publication.

  1. Elle ne sera PAS listée par $this->children()
  2. Elle peut être trouvée par $this->find('is_url')
  3. Il est possible d’y accéder directement par son URL.

Note : elle peut être listée par $this->children(array(), array(), true), parce qu’il est possible d’inclure une page cachée dans une page fille (le troisième paramètre doit être marqué true).

La mise en page

Une des particularité de Frog CMS est de permettre une personnalisation de l’apparence et du contenu au niveau de chaques pages. Plusieurs outils sont à notre disposition :

  1. Gabarits
  2. Extraits
  3. Parties de pages.
  4. Méta-données.

Les gabarits (Layouts).

Il s’agit des traditionnels templates ou squelettes de pages que l’on trouve dans tout système de publication pour le Web. La particularité de Frog CMS est de permettre de pouvoir choisir ce modèle au niveau de chaque page.

Lors de la création d’une page nous avons en effet la possibilité, soit de lui faire hériter (inherit) du gabarit par défaut (celui de la page dont elle dépend), soit de lui faire adopter un autre modèle.

C’est de cette façon par exemple que l’on procède pour créer un fil RSS : on créé une page caché, à laquelle on attribue le modèle Fil_RSS (fournit pad défaut avec Frog CMS).

Un onglet « Gabarits » dans le menu de navigation de l’interface d’administration permet d’accéder rapidement au dispositif permettant de créer autant de modèles de pages dont on a besoin. La procédure est extrêmement simple :

  1. Cliquer sur le bouton « Nouveau Gabarit » (à droite).
  2. Donner un nom au gabarit (il doit être unique).
  • Déclarer le type de contenu (content Type) : par défaut c’est text/html.
  1. Coller le code HTML et PHP dans le champ « Body »
  2. Enregistrer

Les extraits (Snippet)

Il s’agit de fragments de gabarit (un peu comme les « noisettes » de Spip) destinées à être inclus dans un ou plusieurs modèles de pages, voir dans dans des pages elles-mêmes. Par exemple, Frog CMS est installé nativement avec les extraits « header » et « footer » dont l’utilisation coule de sens.

Comme pour les gabarit, le menu de navigation de l’interface d’administration permet d’accéder rapidement au dispositif de création des snippets dont on a besoin. Procédure toujours aussi simple :

  1. Cliquer sur le bouton « Nouvel extrait » (à droite).
  2. Donner un nom à l’extrait (il doit être unique).
  3. Coller le code dans le champ « Body ».
  4. Enregistrer.

Il suffit ensuite de faire un include de l’extrait dans un gabarit ou une page :

  1. <?php $this->includeSnippet('le_nom_du_snippet') ?>

Les parties de pages (partes)

Pour Frog CMS, une page peut être décomposée en plusieurs parties ou éléments. Par défaut elle se compose d’au moins une partie : le corps (body).

Pour ajouter d’autres éléments à une page il faut cliquer sur l’icône verte « + » en haut à droite du formulaire d’édition de la page (l’icône rouge « - » supprime la partie active... donc faire attention !).

Chaque partie de page ainsi créée peut ensuite être appelée dans l’affichage public du site, soit dans un gabarit de page, soit dans la page elle-même.

Pour afficher le corps d’une page :

  1. <?php echo $this->content(); ?>

Note : si vous mettez <?php echo $this->content(); ?> dans le contenu d’une page, vous créez une boucle infinie (infinite loop), et comme dit Philippe Archambault, « vous ne voulez certainement pas d’une boucle infinie. » En d’autres termes cet appel doit être fait uniquement dans un gabarit (template), (et en aucun cas dans une page).

Pour afficher un élément (part) ajouté :

  1. <?php echo $this->content('extended'); ?>

Pour que l’ensemble des pages filles et petites filles héritent d’un élément de leur page parente :

  1. <?php $this->content('sidebar', true); ?>

Note : si l’une de ces pages a sa propre « sidebar » de définie, cela empéchera alors l’héritage.

En règle générale, il peut être intéressant de vérifier par un test que l’élément appelé existe vraiment avant d’appeler la méthode content() :

  1. <?php echo $this->hasContent('sidebar') ? $this->content('sidebar'): ''; ?>

Une autre façon de procéder :

  1. <?php if ($this->hasContent('sidebar')): ?>
  2.     <div id="sidebar">
  3.         <?php echo $this->content('sidebar'); ?>
  4.     </div>
  5. <?php endif; ?>

Note : ne pas oublier de fermer la condition if par un endif.

(à suivre)

Répondre à cet article