Template de page

Le template de page par défaut

Structure de la template par défaut
Figure 2

Le framework Adventy propose un template de base définit dans le dossier du framework : /template/default.template.php.

Ce template décrit la structure par défaut d'un document HTML optimisé pour les moteurs de recherche, tels que Google et Bing. Comme tout document HTML, ce dernier est composé de plusieurs parties :

  1. l'entête (balise head) qui renseigne les propriétés du document ;
  2. le corps (balise body) dans lequel y est décrit le contenu du document à afficher : l'entête de page, le menu principal, le fil d'Ariane, la colonne de gauche, la colonne de droite, le contenu principal, et le pied de page.

En fonction de la ressource appelée (URL), le template récupère les informations dont il a besoin, si elles existent :

  1. les propriétés de la page dans le dossier /meta ;
  2. les feuilles de style de la page dans le dossier /view/css ;
  3. les scripts Javascript de la page dans le dossier /view/js ;
  4. et enfin le contenu de la page dans le dossier /page.

Quant aux feuilles de style et aux scripts Javascript qui ont une portée applicative (sur toutes les pages), ils sont respectivement chargés depuis les dossiers /public/css et /public/js.

Les variables de la balise head

La balise head permet d'y définir les propriétés du document HTML. Cette définition est facultative pour une application de type intranet ou extranet, mais en revanche est incontournable pour un site internet qui souhaite être bien référencé sur les moteurs de recherche.

L'entête de document utilise la variable $this->_metadata qui est un tableau associatif, dont les valeurs proviennent d'un fichier de type /meta/*.meta.php associé à la page ou ressource. Nous verrons au chapitre Pages statiques, la procédure à suivre pour créer tous les fichiers d'une ressource donnée.

Voici les clés disponibles du tableau associatif $this->_metadata :

Propriétés de page
CléDescription
titleTitre du document utilisé par la balise title. Il est très important pour le SEO, et doit contenir au moins un mot clé ou une expression clé.
descriptionDescription du document renseignée dans la balise meta description. Comme le titre, la description est un critère important pour le SEO, puisqu'elle est affichée sur les résultats des moteurs de recherche.
keywordsLes mots et expressions clés sont facultatifs. Les moteurs de recherche ne les prennent plus en compte, mais cela peut servir pour les moteurs de type annuaire et tout autre système d'indexation. Les mots clés sont séparés par la virgule. Ils sont renseignés dans la balise meta keywords.
authorL'auteur du document est une information facultative, mais peut être utile pour les moteurs d'indexation. Cette donnée est renseignée dans la balise meta author.
canonicalL'URL canonique est l'élément qui définit la ressource comme unique pour résoudre le problème du contenu dupliqué en SEO. Cet URL utilise la balise link avec l'attribut rel de valeur canonical. Pour le framework Adventy, la valeur provenant de $_SERVER['REQUEST_URI'] est utilisée le plus souvent comme URL canonique.
Corps de page
CléDescription
navigationLibellé affiché dans le fil d'Ariane de page. Il est mis en lien vers la page courante et correspond au dernier élément du fil d'Ariane.
Type de page
CléDescription
statictrue indique que la page est statique. Ce statut crée automatique un cache de la ressource sur le serveur, au format texte compressé (deflate) et non compressé. La valeur false désigne donc une page dynamique qui ne sera pas mise en cache automatiquement.
compressiontrue pour envoyer au client (navigateur) la réponse sous forme compressée. Dans le cas contraire, aucune compression de la réponse ne sera appliquée.
Cache de page
CléDescription
cacheCette propriété indique le temps d'expiration en seconde du cache de la ressource côté navigateur.
Si la valeur est à 0 ou le cache est expiré, alors le navigateur lance une requête vers le serveur pour récupérer la ressource.
Si le cache est supérieur à 0 ou le cache n'est pas encore expiré, alors le navigateur récupère la ressource dans son système de cache, au lieu de solliciter le serveur, ce qui améliore considérablement le temps de réponse et d'affichage.
expiryContrairement à la propriété précédente, la propriété expiry correspond au temps d'expiration du cache de la ressource du côté serveur. La mise à jour de ce cache s'effectuera par un gestionnaire de tâches de type CRON, ou tout simplement par la suppression manuelle du cache dans le dossier /_cache/page.

Dans la balise head, le CSS de page est récupéré grâce à l'appel de la méthode $this->getCssSource().

Les variables de la balise body

Le corps du document peut être décomposé en plusieurs parties générées par ordre d'important du point de vue SEO. La génération de contenu s'effectue par l'appel de la méthode $this->render avec son paramètre qui détermine le type de contenu à générer comme suit :

ParamètreDescription
self::BODY_VIEW_TYPEGénère le contenu principal de la page.
self::LEFT_VIEW_TYPECe paramètre permet de générer le contenu de la colonne de gauche.
self::RIGHT_VIEW_TYPEComme le contenu de la colonne de gauche, ce paramètre est associé au contenu de la colonne de droite.
self::MENU_VIEW_TYPEGénère le menu principal de l'application.
self::HEADER_VIEW_TYPECe paramètre est lié au contenu de l'entête de page.
self::FOOTER_VIEW_TYPEComme son nom l'indique, ce paramètre correspond à la génération du pied de page.

Seul le contenu principal est obligatoire. Les autres contenus sont facultatifs.

Le fil d'Ariane peut être utile aussi. Dans ce cas, la méthode $this->renderBreadcrumb() répond à ce besoin en générant le fil d'Ariane de la page.

Pour finir avec la balise body, il faut savoir que le Javascript de page est exécuté en différé, ce qui se traduit par le placement de ce script en fin du corps de page. Le code généré est produit par l'appel de la méthode $this->getJsSource().

Créer un template de page personnalisé

Le template de page par défaut peut ne pas convenir, et il est tout à fait possible d'en créer un totalement personnalisé. Pour cela, il suffit de créer un nouveau template avec l'extension *.template.php et de le placer dans le dossier /template. Par exemple /template/my-template.template.php, où my-template est le nom de fichier du template de page personnalisé.

Dans ce nouveau template, selon les besoins, veuillez utiliser les variables et les méthodes comme décrites précédemment. Voici pour résumer très rapidement :

Les variables
$this->_metadata[<key>].
Les méthodes
$this->getCssSource(),
$this->render[<key>],
$this->renderBreadcrumb(), $this->getJsSource().

Une fois ce nouveau template de page personnalisé terminé, il faut maintenant qu'il soit pris en compte, donc remplacer le template de page par défaut par le nouveau :

  1. éditer le fichier d'index /index.php ;
  2. trouver la ligne : (new \org\adventy\request\PageRequest($_ENV['FRAMEWORK_ROOT'] . '/template/default' . $_ENV['FILE_EXTENSIONS']['template']))->execute(); ;
  3. remplacer $_ENV['FRAMEWORK_ROOT'] . '/template/default' par $_ENV['ROOTS']['template] . '/my-template', ou my-template est le nom de fichier de votre template de page personnalisé ;
  4. enregistrer, puis fermer le fichier.

Bravo ! A ce stade, l'application utilisera le nouveau template pour générer les pages.