Listage de news alternatif sous Plone

Toujours dans le cadre de la refonte du site web de la formation PSM, il a fallu créer un comportement de la page d’accueil qui diffère de celui des autres pages. Concrètement, il fallait que la page d’accueil dispose de 2 colonnes pour lister à gauche les dernières nouvelles et à droite mettre le contenu d’accueil.

Seulement, le problème avec le template par défaut de Plone, c’est qu’il affiche une liste de news similaire à ça :

Listing des news, avant modification

Bien évidemment, ça ne colle pas avec les besoins qui ont été définis. Pas besoin de spécifier l’auteur, mais surtout besoin de lister le contenu de la news ou tout du moins les premiers mots.
J’ai donc cherché le template de listing des news dans portal_skins/plone_templates/news_listing, puis je m’en suis inspiré en supprimant les parties inintéressantes (tout le contenu de la balise de classe newsContent), et en y insérant ceci :

  1. <div class="newsContent">
  2.   <p tal:content="python: context.strip_tags(has_body)">
  3.     Description
  4.   </p>
  5. </div>

Je fais ici appel à has_body qui est une variable définie un peu plus haut dans le template, égale à result/getObject/CookedBody qui est le corps de la news avec ses attributs de forme HTML. Pour faciliter la lecture rapide des news, j’ai intégré un script python (strip_tags) qui supprime ces balises de mise en forme. Voilà son contenu (in_text est la variable has_body récupérée dans le script) :

  1. s_list = list(in_text)
  2. i,j = 0,0
  3.  
  4. while i < len(s_list):
  5.      if s_list[i] == ‘<’:
  6.           while s_list[i] != ‘>’:
  7.                s_list.pop(i)
  8.  
  9.           s_list.pop(i)
  10.      else:
  11.           i=i+1
  12.  
  13. join_char=
  14. return join_char.join(s_list)

Voilà donc ce qui me permet d’avoir ce résultat là :

Listing des news final

Ce qu’il faudrait améliorer en revanche, c’est le fait de garder les balises de saut à la ligne, mais c’est déjà un début.

Laisser une réponse