Les modules Contao - Actualités / News

Les modules Contao - Actualités / News

L’affinité que les agences ont avec tel ou tel système dépend surtout de leur facilité à couvrir les demandes des clients. Un système qui vous propose des fonctionnalités intégrées - dites “natives” - va vous permettre de vous focaliser sur les spécificités d’un projet.

L’essentiel est de ne pas réinventer la roue systématiquement, et de disposer d’une configuration suffisamment flexible pour répondre à un panel de demandes sans pour autant être une usine à gaz.

Le CMS Contao dispose de nombreux modules qui couvrent l’essentiel des fonctionnalités d’un site Internet. Parmi eux, on comptera une gestion d’actualités, d’évènements, de newsletters, d’un extranet et bien d’autres que l’on aura l’occasion de présenter dans le futur.

Aujourd’hui, on va se focaliser sur celui que l’on utilise le plus souvent : la gestion des actualités.

Mise en place

Contao organise ses actualités en archives d’actualités. Il faut voir ces archives comme des catégories d’actualités que l’on dispatchera sur nos pages.

Pour chaque catégorie, on peut configurer une page de lecture pour lire une actualité sur une page seule, si l’actualité doit être restreinte à des utilisateurs authentifiés ou encore si l’on veut autoriser les commentaires.

Ensuite, vous pouvez créer vos actualités à l’intérieur de ces archives. Une actualité vient elle-aussi avec son lot de configuration, avec un titre, une date & une heure, un sous-titre, une accroche, une illustration et d’autres champs d’accessibilité et de publication.

Vous pouvez vous contenter de l’accroche comme contenu d’une actualité quand celle-ci s’approche d’une brève, mais si vous avez besoin de plus de contenus, vous pouvez bénéficier de tous les éléments de contenu de Contao pour structurer votre actualité de la façon désirée.

Si la fonctionnalité vous intéresse, vous pouvez également configurer des flux RSS. C’est une méthode de livraison d’actualités efficace mais mise de côté car elle permet à vos utilisateurs d’accéder à vos news via d’autres outils (donc perte de trafic et pas de rémunération via publicité etc…)

Une fois cela fait, vous allez devoir organiser vos modules de liste et de lecture. Pour cela, créez et configurez un module “Liste d’actualités” et “Lecteur d’actualités”. Dans chacun de ces modules, vous pouvez décider quelles archives sont concernées par ces modules. C’est ainsi que l’on peut afficher des flux d’actualités à différents endroits de notre site.

Il est aussi possible de configurer les templates HTML à utiliser, si vous souhaitez les modifier (nous verrons cela dans la prochaine partie), de formater les images d’une certaine façon, de programmer une pagination et un tri.

Il y a d’autres modules, comme les Archives & les Menu d’archives qui permettent de regrouper et filtrer les différentes actualités par année / mois etc… C’est pratique quand on commence à avoir beaucoup d’actualités et que l’on a besoin d’une structure plus organisée.

Il ne vous reste plus qu’à créer les pages qui accueilleront vos listes et vos modules, dans un élément de contenu prévu à cet effet et c’est terminé. Les actualités s’ajouteront au fur et à mesure de leurs créations, sans autre manipulation de votre part !

Personnalisation de l’affichage

Maintenant que notre structure est en place, il est temps de voir comment personnaliser notre frontend. C’est une partie un peu plus pour les développeurs car il s’agit surtout de personnaliser et de coder l’allure de nos actualités.

Les modules des actualités sont séparés en 2 templates :

  • Les wrappers, commençant par mod_news…
    • mod_newslist
    • mod_newsreader
    • ...
  • Les articles, commençant par news_
    • news_latest
    • news_full

Les templates natifs ont des noms plutôt explicites. Certains sont associés aux listes d’actualités, en privilégiant l’affichage d’accroches, et d’autres aux lecteurs, car ils affichent tout le contenu associé à une actualité et un bouton retour.

<?php $this->extend('block_unsearchable'); ?>

<?php $this->block('content'); ?>

  <?php if (empty($this->articles)): ?>
    <p class="empty"><?= $this->empty ?></p>
  <?php else: ?>
    <?= implode('', $this->articles) ?> // Appelle news_latest ci-contre
    <?= $this->pagination ?>
  <?php endif; ?>

<?php $this->endblock(); ?>
// Ce modèle est appliqué pour chaque news trouvée et affichée par le module
<div class="layout_latest arc_<?= $this->archive->id ?> block<?= $this->class ?>" itemscope itemtype="http://schema.org/Article">

  <?php if ($this->hasMetaFields): ?>
    <p class="info"><time datetime="<?= $this->datetime ?>" itemprop="datePublished"><?= $this->date ?></time> <?= $this->author ?> <?= $this->commentCount ?></p>
  <?php endif; ?>

  <?php if ($this->addImage): ?>
    <?php $this->insert('image', $this->arrData); ?>
  <?php endif; ?>

  <h2 itemprop="name"><?= $this->linkHeadline ?></h2>

  <div class="ce_text block" itemprop="description">
    <?= $this->teaser ?>
  </div>

  <?php if ($this->hasText || $this->hasTeaser): ?>
    <p class="more"><?= $this->more ?></p>
  <?php endif; ?>

</div>

Pour surcharger un modèle Contao, vous allez dans la section “Modèles” de votre back-office et vous importez le template à modifier via le bouton “Nouveau” en haut de page. Si vous conservez le même nom, votre fichier remplacera celui de Contao.

La bonne pratique est plutôt de rajouter un suffixe vous correspondant, et votre fichier sera disponible dans la configuration du module, comme on l’a vu plus haut.

Exemple : vous surchargez news_latest, le renommez news_latest_custom, puis vous allez dans la configuration du module et il sera disponible à tous les endroits où vous pouviez changer news_latest.

Contao fonctionne de cette façon pour tous les modules. Via la section “Modèles”, vous pouvez constater qu’il y a une tripotée de templates, tous modifiables selon vos besoins !

  • Les modules commencent par mod_
  • Les éléments de contenus par ce_
  • Les squelettes de page par fe_
  • etc…

Il est important de savoir que TOUS les champs du Datacontainer tl_news sont disponibles dans les fichiers “news_” en saisissant $this->{column}, en remplaçant column par la donnée que vous voulez. Ces données seront toutefois potentiellement formatées par le module en amont.

Cela prend aussi en compte les champs que vous auriez pu ajouter en surchargeant le Datacontainer tl_news (voir cet article, section DCA, point 4: https://www.webexmachina.fr/article/2018/06/comment-developper-une-extension-contao-structure-backend.html).

Digression sur le détournement de ces modules liste / lecteur

Les actualités fonctionnent sur un principe de listes d’éléments & de lecteurs associés. Cela a l’avantage de couvrir bien plus que des actualités !

Vous pouvez par exemple publier vos références de projets grâce à cela, vous disposez de tout ce qu’il faut. Ou alors des galeries de photos, des produits, des magasins etc…

Quelques extensions

On a déjà vu comment développer notre propre module Contao dans un précédent article et nous avons aussi parler de la communauté Contao, qui distribue gratuitement une pléthore d’extensions pour couvrir encore plus de besoins !

En voilà quelques-unes, associées aux actualités :

https://packagist.org/packages/codefog/contao-news_categories
Ajoute un système de catégories / tags aux news, permettant d’avoir des filtres avec les modules de listing

https://packagist.org/packages/fritzmg/contao-news-sorting
Ajoute des tris aux modules de listing, pour ne pas avoir qu’un tri chronologique

https://packagist.org/packages/fritzmg/contao-news-related
Affiche des actualités en relation avec l’actualité en cours de lecture

https://packagist.org/packages/inspiredminds/contao-wordpressimport
Importe des actualités d’un Wordpress

https://packagist.org/packages/markocupic/contao-news-infinite-scroll-bundle
Ajoute une pagination de style “infinite scroll” aux listes de Contao

Et bien plus !

Le module des actualités est le premier module Contao que j’ai pu décortiquer et surcharger. Il contient tous les éléments qu’il est intéressant de modifier pour appréhender les mécanismes du CMS.

Une fois que l’on a appris à modifier le fonctionnement d’un module, on les a tous fait. C’est ce qui fait de Contao un bon CMS à nos yeux : les procédures sont constantes et cohérentes, même si les objectifs des modules sont différents.

Le prochain coup, nous verrons comment mettre en place un système d'événements et de calendriers / agendas sur un Contao, ainsi que les fonctionnalités et extensions associées !

Dans la même catégorie