Typo 6.0.6 a introduit le concept de types d’articles, permettant d’utiliser des templates spécifiques pour chacun d’eux. Avec la version 6.0.8, ce principe a été étendu aux catégories et aux tags. Cet article a pour objectif de vous expliquer comment mettre en place un tel type de templates.

Imaginons que vous avez lancé un blog dans lequel vous consignez, entre autres choses, vos dégustations de vin. Vous souhaitez afficher ces articles d’une manière particulière, en y joignant toujours une image, avec un style particulier. Vous souhaitez également donner à la catégorie oeunologie une identité propre, mais sans la sortir de votre blog. Afin d’éviter les trolls, vous allez également désactiver les commentaires sur ces billets (c’est surtout pour rendre le template plus lisible, ndlr).

Préparer l’environnement

Avant de créer les templates, vous allez mettre en place l’environnement nécessaire à vos exercice de rédaction :

  1. Un type d’articles judicieusement intitulé “vin”.
  2. Une catégorie “oeunologie”.

Connectez vous à l’administration de votre blog, et cliquez sur Articles, puis Types d’Articles. Créez un nouveau type d’article nommé “vin”.

Créer un nouveau post type

Notez le nom du template qui apparait ci-dessous, vous l’utiliserez un peu plus tard.

Détail d'un post type

Créez maintenant une nouvelle catégorie. Pour cela, cliquez sur “Articles”, puis “Catégories”. Appelez là “oeunologie”.

Créer une nouvelle catégorie

Là encore, conservez le lien permanent, vous en aurez besoin un peu plus tard.

Détail d'une nouvelle catégorie

Créer les templates associés

Vous allez maintenant créer deux nouveaux templates. Le premier vous servira à afficher les articles associés au post type “vin”, l’autre sera réservé à la catégorie oeunologie.

Créez un fichier nommé vin.html.erb dans le répertoire views/articles/ de votre thème. Si l’aborescence views/articles/ n’existe pas, créez la. Le contenu du fichier devrait ressembler à ça :

<div class="vin" %>>
  <h2><%= link_to_permalink @article, @article.title %></h2>
  <p class="auth"><%= _("Posted by")%> <%= author_link(@article) %>
  <%= display_date_and_time @article.published_at %></p>
  <%= @article.html(:body) %>
  <!-- Ceci affichera la photo en pièce jointe  -->
  <% @article.resources.each do |upload| %>
    <img src='<%= "#{this_blog.base_url}/files/#{upload.filename}" %>' class="centered" />
  <% end %>
  <div class="extended">
    <%= @article.html(:extended) %>
  </div>

</div>
<p class="meta">
  <%= article_links @article %>
</p>

Vous allez maintenant faire de même avec la catégorie oeunologie. Dans le répertoire views/categories de votre thème, ajoutez un fichier oeunologie.html.erb. Le code suivant est adapté de la vue categories/show.html.erb d’un des thèmes par défaut de l’application.

<h1><%= link_to "Oeunologie", "#{this_blog.base_url}/category/#{params[:id]}" %></h1>

<div class='category-excerpt <%= "border" if @article_counter >= 0 %>' id="article-<%= article.id %>">
  
<% @articles.each do |article| %>
  <h2><%= link_to_permalink(article, article.title) %></h2>
  <p class="auth"><%= _("Posted by")%> <%= author_link(earticle) %>
  <%= display_date_and_time article.published_at %></p>
  <%= article.html(:body) %>
  <!-- Affichage de la pièce jointe -->
  <% article.resources.each do |upload| %>
    <img src='<%= "#{this_blog.base_url}/files/#{upload.filename}" %>' class="centered" />
  <% end %>
  <div class="extended">
    <%= article.html(:extended) %>
  </div>
<% end %>
</div>

<div id='paginate'>
  <%= will_paginate @articles, { :previous_label => _('Previous'), :next_label => _('Next')  } %>
</div>

Voilà, vous y êtes. Vous allez maintenant pouvoir écrire vos articles. N’oubliez pas de sélectionner le type d’articles “vin”, ni de publier votre article dans la catégorie oeunologie.

Éditeur des posts