Ajouter des feuilles de style via l'API

Traduction de la page http://drupal.org/node/225868
publiée / actualisée le 29 Janvier 2011 sur drupal.org


Pour la plupart des thèmes, ajouter des feuilles de style via le fichier .info sera suffisant. Mais comme ce fichier .info est statique, les feuilles de style ne peuvent pas être ajoutées dynamiquement. Selon la façon dont les thèmes gèrent les feuilles de style, cela peut n'avoir aucune incidence. En cas de doute, utilisez le fichier .info.

L'API comporte deux fonctions pour travailler avec les feuilles de style : drupal_add_css et  drupal_get_css.  Voici une exemple d'ajout dynamique de feuilles de style avec ces fonctions.

Remplacez le préfixe « drop » de la fonction par le nom de votre thème.

<?php
function drop_preprocess_page(&$variables) {
  
$front_style path_to_theme() .'/front-page.css';
  
$path_style path_to_theme() .'/path-'arg(0) .'.css';

  if (
file_exists($front_style) && $variables['is_front']) {
    
$include_style $front_style;
  }
  elseif (
file_exists($path_style)) {
    
$include_style $path_style;
  }

  if (isset(
$include_style)) {
    
drupal_add_css($include_style'theme''all'FALSE);
    
$variables['styles'] = drupal_get_css();
  }
}
?>

Dans cet exemple, la feuille de style front-page.css sera utilisée pour la page d'accueil, et d'autres basées sur le chemin interne. Par exemple : http://example.com/admin utilisera une feuille de style nommée path-admin.css.

Quelques remarques :

  • En fonction des endroits et des moments au cours desquels ont lieu l'ajout des feuilles de style, des appels à drupal_get_css devront être faits pour les inclure. Les feuilles de style sont d'abord récupérées dans template_preprocess_page. Reportez-vous à Preprocessors and variables pour les détails sur l'ordre des pré-traitements.
  • drupal_add_css comporte un paramètre pour regrouper les feuilles de style ajoutées. Pensez à le désactiver, comme ci-dessus, lors de l'ajout dynamique des feuilles de style car les fichiers ajoutés forcent la régénération d'une grande feuille de style, ce qui peut ralentir la transmission de la page et consommer de la bande passante.

Où ajouter le code ?

Ce codee peut être ajouté dans le fichier template.php du dossier de votre thème. Il peut déjà y avoir une fonction nommée phptemplate_preprocess_page. Incorporez-là simplement dans le corps de votre fonction XXX__preprocess_page.

Vous devrez peut-être également modifier variables en vars pour que cela fonctionne.

Commentaires

It may not matter altogether

It may not matter altogether : cela peut n'avoir aucune incidence.

C'est corrigé :-) Merci !

C'est corrigé :-)

Merci !

Poster un nouveau commentaire

Le contenu de ce champ sera maintenu privé et ne sera pas affiché publiquement.
  • Les adresses de pages web et de messagerie électronique sont transformées en liens automatiquement.
  • Tags HTML autorisés : <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Les lignes et les paragraphes vont à la ligne automatiquement.
  • You can enable syntax highlighting of source code with the following tags: <code>, <blockcode>, <css>, <php>, <html>, <ccss>, <ccss>, <drupal5>, <drupal6>, <html>, <javascript>, <php>. Beside the tag style "<foo>" it is also possible to use "[foo]".
  • You may use [view:viewname] tags to display listings of nodes.

Plus d'informations sur les options de formatage

CAPTCHA
Cette question permet d'éviter le spam :
2 + 0 =
Solve this simple math problem and enter the result. E.g. for 1+3, enter 4.