Typo, le principal outil de publication en Ruby on Rails dispose d’un système de template poussé extrêmement souple, et probablement un des plus avancés qui soit. Il permet de créer aussi bien des thèmes rapides utilisant le balisage par défaut de l’application que des thèmes extrêmement complexes totalement personnalisés.
La majorité des thèmes disponibles sur Typogarden ayant été développés après l’introduction de ce second mode, ses possibilités – et sa simplicité – sont assez peu connues, laissant penser, à tort, que Typo ne dispose pas d’un système de templates avancé.

Vite fait, bien fait, la méthode pour les feignants

Un template Typo se compose à minima de trois fichiers :

  • Un squelette, appelé layout.
  • Une feuille de style CSS.
  • Un fichier à propos au format markdown.
  • Éventuellement des images, et une capture d’écran.

L’arborescence minimum est donc :

themes 
      \_ mon thème
                  \_ about.markdown
                  \_ images
                  \_ layouts
                            \_ default.html.erb
                  \_ preview.png
                  \_ stylesheets
                                \_ style.css

Le principal fichier est le fichier default.html.erb, qui va servir de squelette à votre thème. Il s’agit d’un simple fichier en HTML dans lequel nous allons placer quelques directives Ruby permettant d’afficher les informations venues de l’application.

En-tête du fichier

L’en-tête du fichier va contenir les informations standards pour un document HTML.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="fr">
<head profile="http://gmpg.org/xfn/11">
  <title><%= h(page_title) %></title>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <meta http-equiv="Content-Language" content="fr" />

  <%= stylesheet_link_tag "/stylesheets/theme/style", :media => 'all' %>
  <%= page_header %>
</head>

Les directives importantes sont :

  • h(page_title), qui va contenir le titre du document en cours. Ce titre est généré automatiquement par Typo, et la traduction est assurée dans les langues supportées.
  • stylesheet_link_tag contiendra le nom de votre feuille de style, amputé (ou non) du suffixe .css.
  • page_header va afficher l’en-tête de page généré par Typo. Il contient les informations et directives suivantes :
    • Le tag ICBM pour la localisation géographique de votre blog Typo.
    • Le champ meta description du document.
    • Le champ meta keyword du document.
    • Le champ RSD du site.
    • Les URL des flux RSS et Atom pour le document en cours, pour la découverte automatique.
    • Les feuilles de style utilisées par les plugins inclus dans Typo.
    • Les fichiers Javascript nécessaires à votre blog Typo.
    • L’appel à Google Analytics si vous avec renseigné ce champ dans l’administration.
Corps du fichier

Toutes les div incluses dans le corps de ce fichier ne sont pas indispensables, seuls les appels aux méthodes Ruby ont leur importance.

<body>
<div id="header">
  <h1><a href="<%= this_blog.base_url %>"><%= this_blog.blog_name %></a></h1>
  <h2><%= this_blog.blog_subtitle %></h2>
</div>

<div id="page">
  <div id="content">
    <%= @content_for_layout %>
  </div>

  <div id="sidebar">
    <%= render :partial => 'shared/search' %>
    <%= render_sidebars %>
  </div>
</div>

</body>
</html>

Ici, les directives importantes sont :

  • this_blog.base_url : l’URL de votre site, renseignée dans les settings.
  • this_blog.name : le titre du site, indiqué dans la configuration.
  • this_blog.blog_subtitle : la tagline de votre site, renseignée dans les settings.
  • content_for_layout est l’appel le plus important, puisque c’est lui qui va afficher le contenu de la page en fonction du contrôleur invoqué : liste de billets, liste de tags, billet seul…
  • render_sidebars permet d’afficher le contenu des plugins que vous aurez auparavant choisis dans l’administration.

Et voilà, vous savez faire un thème Typo standard. Dans la seconde partie de cet article vous apprendrez comment faire un thème avancé en utilisant toutes les ressources offertes par Typo.

Perry the Platypus wants you to subscribe now! Even if you don't visit my site on a regular basis, you can get the latest posts delivered to you for free via Email: