Drupal

Modifier/Overrider facilement le CSS d'une page Drupal

Il arrive qu'on veuille modifier rapidement l'aspect d'une page sans forcément avoir le courage d'aller chercher dans le CSS du thème ou se trouve la partie à modifier, où de créer une nouvelle feuille de style pour écraser la propriété.

Pour cela, il existe CSS Injector, qui permet d'éditer les propriétés CSS dans toutes ou certaines pages.

Une fois le module installé et activé, rien de plus simple : Configuration du site > CSS injector

Ajouter une nouvelle règle

Chaque règle permet de modifier le CSS d'une ou plusieurs pages. Je vous conseille donc de créer soit des règles selon les pages où elles vont être appliquées, par exemple "Toutes les pages", "Page d'accueil", "Noeuds", etc. soit selon l'élément qu'elles vont affecter, par exemple "Suppression des puces", "Mise en forme des commentaires", etc. Ou encore les deux !

De cette manière l'administration de ces règles sera d'autant plus facile.

 

Ecraser une propriété existante

Souvenez vous que CSS Injector n'est qu'un module, il sera donc appelé avant le thème et sera écrasé par celui-ci (voir mon article sur le processus de theming Drupal), pour écraser une propriété d'un thème, il vous faudra donc user de la hiérarchie CSS :

1
2
3
body .block-locale ul li {
    list-style-type: none;
}

pour écraser :

1
2
3
.block-locale ul li {
    list-style-type: none;
}

ou encore d'utiliser le flag !important pour spécifier au navigateur que votre propriété est la plus importante.

 

Le cache

L'option Preprocess CSS (cochée par défaut) permet d'utiliser l'option preprocess de drupal_add_css pour que CSS Injector s'intègre aux CSS aggrégés et respecte le cache Drupal donc si vous ne voyez rien changer sur votre page : pensez à le vider !

 

Condition PHP

Le formulaire d'édition des règles permet d'utiliser un code PHP pour intégrer le code CSS. On peut donc aisément changer de background général selon l'heure de la journée :

Code CSS

1
2
3
body { 
    background: url('sites/all/themes/montheme/img/bg_nuit.png'); 
}

Code PHP

1
2
3
4
<?php
if((int)date('H') < 8 || (int)date('H') > 21)
    return TRUE;
?>

Attention aux erreurs PHP !

Structure du theming sous Drupal 6

Fichier attachéTaille
Icône PDF Drupal_theme_flow_6.pdf74.86 Ko

Je me suis remis depuis peu au theming sous Drupal pour un projet, et le moins que l'on puisse dire, c'est qu'on peut facilement s'y perdre sad. Entre les preprocess, template, hooks, et autres mots barbares, on ne sait plus trop qui fait quoi.

Alors bien sûr comme toujours la documentation explique très bien le processus, mais comme je n'avais pas trop le temps de relire toutes les pages concernant le theming, j'ai trouvé un PDF qui résume le tout.

Le voici en image : 

Un peu plus clair maintenant, non ? smiley

Source

Installer le book Drupal sous Coda

Si comme moi vous êtes sur Mac et vous codez sur Coda (que je recommande d'ailleurs), alors voici une petite astuce qui vous séduira. Vous l'avez peut-être remarqué, Coda intègre par défaut le book de PHP, il s'agit en fait d'un version hors ligne de la documentation. Tout ça c'est bien pratique mais pour nous, fidèles développeurs de Drupal, on aimerait avoir l'API de celui-ci sous la main...

Et bien voeu exaucé ! laugh

Comment faire ? Petit tutorial :

  • On ouvre Coda si ce n'est déjà fait > Clic sur Books dans les modes d'affichages
  • Clic sur "+" en bas à gauche
  • On remplit de cette manière 

Book title: Drupal 6 API
Book URL: http://drupalcontrib.org/
Use for Mode: PHP-HTML
Search URL: http://drupalcontrib.org/api/search/6/*

et pour l'image de couverture celle-ci est très chouette

La où ça devient intéressant, c'est que l'on a un raccourci pour tomber directement dessus : Command key icon + double clic. De même, on peut rechercher sur des sites externes qui documentent également les modules tiers, comme drupalcontrib.

L'astuce est également possible pour d'autre languages et Frameworks, comme jQuery :

URL: http://docs.jquery.com/Main_Page
Search URL: http://docs.jquery.com/Special:Search?ns0=1&search=*&go=

N'hésitez pas à rajouter les vôtres en commentaire ! 

Source

France.fr sous Drupal

A l'occasion de la fête nationale du 14 juillet, un portail international sur notre douce France rouvre ses portes. France.fr a pour but aux touristes étrangers de présenter la France, ses régions, ses caractèristiques, etc. Traduit en anglais, allemand, italien et espagnol, ce site est à la fois riche en contenu et simple de navigation, grâce à 6 rubriques essentielles (connaître, visiter, vivre, étudier, travailler, entreprendre), il va droit au but.yes

Là où est la bonne surprise, c'est que ce tout nouveau site, image de la France sur Internet, tourne sous Drupal smiley. Alors est-ce un signe que l'Elysée a bien compris l'avantage d'un outil open-source, ou bien qu'il suit comme un mouton tout ce que fait la Maison Blanche ? En tout cas ce n'est que bénéfique pour la communauté Drupal. Il est à noter que ce n'est pas le premier site représentant l'État à utiliser Drupal, le portail du gouvernement arbore déjà notre petite tête bleue.

Et là vous vous demandez : "Mais comment fait-il pour savoir ça ?!?" et moi je vous répond "Mais parce que je suis un Dieu voyons..." cool Non sans rire, c'est grâce à une petite extension Chrome bien pratique qui détecte sur quel(s) framework(s) tourne(nt) les sites que vous visitez, elle n'est pas fiable à 100% (dans le sens où elle en laissera passer) mais permet de voir rapidement avec quoi est construit un site (Wordpress, Drupal, Typo3, jQuery, Prototype, etc.), son nom est Chrome Sniffer.

Bartik : une nouvelle tête pour drupal

Avec la sortie de l'alpha 6 de Drupal 7, non seulement on voit le bout de la liste des bugs à résoudre de celui-ci, mais aussi quelques bonnes surprises, comme l'apparition d'un nouveau thème par défaut : Bartik.

Celui-ci prendra la place du thème visible après installation à défaut du bon vieux Garland après quatre années de bons et loyaux services. Le successeur, dont on doit le nom à l'une des premières programmeuses,  travaillant sur l'ENIAC, Jean Bartik, a pour but de donner un peu de fraîcheur et une nouvelle image à la prochaine mouture de Drupal. Son style à la fois moderne, propre et flexible permet une bonne entente avec le thème d'administration de Drupal 7 : Seven.

 

Une nouveauté de ce thème par rapport à Garland est qu'il gère totalement le support de l'écriture de droite à gauche (RTL en anglais), cela signifie que les blocs aussi seront déplacés lorsque que le RTL sera activé. D'autres thèmes étaient également candidats pour rentrer dans le coeur de Drupal : Corolla (demo) et Busy (demo), mais il faut croire que l'équipe derrière Bartik a fait un meilleur boulot que ceux-ci.

Cela s'inscrit dans le processus de rafraichissement des sites de la communauté qui vont eux aussi arborer un tout nouveau look, un thème nommé Blue Cheeze. Des nouvelles versions sont d'ores et déjà visibles pour quelques sites comme localize.drupal.org et association.drupal.org et les autres, comme api.drupal.org ainsi que le site principal sont toujours en phase de test. Il est à noter que non seulement le site principal va changer de style, mais il va également améliorer l'interface utilisateur avec un nouveau dashboard, customizable et remplaçant les traditionnels liens vers les listes de bugs que l'ont suit, et autres blocs actuellement sur la droite du site.

Je ne sais pas pour vous mais j'espère que toutes ces petites nouveautés vont donner un nouvelle image de drupal et faire grossir la communauté !

Drupal Gardens

J'ai reçu il y a un mois maintenant mon invitation pour la beta de Drupal Gardens. Ce service, fourni par Acquia, offre un hébergement de site sous Drupal 7.

 

Drupal as a service

Ce service est une plateforme d'hébergement complète, avec la possibilité de créer plusieurs sites, de sauvegarder, restaurer et exporter votre site web. Chaque site aura une adresse de type monsite.drupalgardens.com, on peut rapprocher ce type de service à Wordpress qui offre également un service gratuit de blogging.
Dans ce sens on parlera de "Drupal as a service".

Le constructeur de thème

Acquia a focalisé le développement de sa distribution préinstallée sur chaque site afin qu'elle soit la plus intuitive possible. L'utilisateur pourra charger et modifier son thème "en live" puis enregistrer ou annuler ses changements. La majorité des changements sont visibles directement dans le navigateurs puisque tout est fait via AJaX.

Une petite zone d'administration vous permettra tout cela :

On nous propose 7 thèmes par défaut, avec pour chacun la possibilité de modifier la palette de couleur (couleur des liens, titres, puces, ...), le logo et la favicon, la structure (nombre et largeur des colonnes), la police, les bordures et marges, l'arrière-plan. et si ce n'est pas encore assez, vous pouvez même ajouter votre propre code CSS !

Quand tout vous plaît, vous enregistrez et/ou vous appliquez votre thème perso.

L'administration

Elle s'organise à travers une barre de menu en haut de la page, ressemblant étrangement à celle du module admin. Les préférences s'affichent et se modifient via des popup AJaX rendant toute l'administration fluide et intuitive, on doit bien sûr cela à Drupal 7.

Le bilan

Acquia nous offre ici une solution viable à l'installation manuelle de Drupal, définitivement utile pour un blog de petite envergure ou un site rapide pour la tenue d'un évènement par exemple. On devra voir apparaître à la fin de la beta des formules avec de la publicité et certaines limitations pour continuer à utiliser le service gratuitement, et d'autres payantes offrant plus d'espace disque et de ressources.
 

Pour s'inscrire, ça se passe ici.

Les fonctions cachées de Devel

Quoi de plus frustrant de ne pas savoir ce qui se passe lorsque qu'une page se charge dans Drupal ? angry On a souvent des pages de redirection qui contiennent des erreurs et qui nous empêchent de les voir.
Lorsque que l'on développe un module ou que l'on construit un thème, on aimerait parfois savoir ce qui se trouve dans certaines variables.

Alors qu'est ce qui s'offre à nous ? Un drupal_set_message('<pre>'.print_r($variable, true).'</pre>'); ? Un peu long vous ne trouvez pas ? indecision

Eh bien le module Devel, spécifiquement conçu pour faciliter le développement de modules et l'administration de Drupal apporte quelques fonctions tout simplement géniales :

1
dsm($input, $name = NULL);

alias de drupal_set_message, met la variable en forme de menu déroulant avec la librairie Krumo
$input :
votre variable ou votre texte
$name : (optionnel) préfixe a donner au message (exemple : dsm('contenu de ma variable', 'ma variable); donnera "ma variable => contenu de ma variable")

 

1
dpm($input, $name = NULL);

alias de dsm()
 

1
dvm($input, $name = NULL);

même fonctionnement que dsm() mais en utilisant var_dump() (exemple : dvm('mon contenu'); donnera "string(11) "mon contenu")
 

dpr($input, $return = FALSE, $name = NULL);

affiche le print_r() de votre argument au debut de la page ou le stocke dans une variable (très pratique si les messages ne sont affichés dans aucune région du thème)
$return : si TRUE, le print_r() de l'entrée sera renvoyé

 

kpr($input, $return = FALSE, $name = NULL);

même fonctionnement que dpr() mais affichera si possible avec la librairie Krumo
 

dvr($input, $return = FALSE, $name = NULL);

même fonctionnement que dpr() mais utilisera var_dump()
 

Mais aussi d'autres ne concernant pas forcément l'affichage des variables :

dargs($always = TRUE);

affiche les arguments passés à la fonction courante
$always : si FALSE, ne l'affichera qu'une seule fois

 

db_queryd($query);

affiche la requête SQL complète et la possible erreur générée dans le navigateur (très utile pour savoir ce que l'on passe comme argument à une requête)
 

dfb($arg, ...);

affiche les arguments dans la console Firebug si FirePHP est installé
 

Toutes ces petites fonctions ne sont pas forcément documentées (encore moins en français), donc si vous en découvrez d'autres n'hésitez pas à partager wink

Drupal 7 : l'API de la base de données

Il est à noter que je n'ai pu installer Drupal 7 pour monter ce blog car impossible avec OVH.
Cependant en cherchant d'où venait l'erreur (on obtient un méchant SQLSTATE[70100]: <>: 1317 Query execution was interrupted) j'ai pu fouiller pour la première fois dans le code de la nouvelle release. Et là Oooooooh surprise de la POO !

En effet j'ai pu découvrir (avec grand bonheur, soit dit en passant) que la couche entière 'Base de données' de Drupal a été remaniée pour être programmée en POO.

Du coup ni une ni deux j'ai tripatouillé le code pour m'afficher toutes les propriétés de l'exception lancée et trouver la requête qui mettait le souk : SELECT 1 FROM information_schema.tables WHERE (table_schema = :db_condition_placeholder_4) AND (table_name = :db_condition_placeholder_5) 
Là il suffit d'un peu de jugeote : je suis sur OVH mutualisé, je n'ai donc pas accès à information_shema, le bug est posté y'a plus qu'à attendre voir si la communauté est prête à prendre en compte ce comportement.

Voici quelques exemples, récupérer la valeur d'un champ :

1
2
3
4
5
//Drupal 6 
$value = db_result(db_query('SELECT champ FROM {table}')); 
 
//Drupal 7 
$value = db_query('SELECT champ FROM {table}')->fetchField();

Récupérer un objet :

1
2
3
4
5
6
7
8
9
10
11
//Drupal 6: 
$result = db_query('SELECT champ FROM {table} WHERE condition = %d', $variable); 
while ($row = db_fetch_object($result)) { 
    // Boucler sur les résultats pour les traiter 
} 
 
//Sous Drupal 7 il n'y a pas de db_fetch_object() ou de db_fetch_array(): 
$result = db_query('SELECT champ FROM {table} WHERE condition = :substituant', array(':substituant' => $variable)); 
foreach ($result as $row) {
    // Boucler sur les résultats pour les traiter 
}

Autres requêtes:

1
2
3
4
5
6
7
8
9
10
//Une requête de suppression dans Drupal 7: 
db_delete('table') ->condition('champ_condition', $variable) ->execute(); 
 
//Une requête de mise à jour dans Drupal 7: 
db_update('table') ->fields( 
  array( 
    'champ_1' => $variable_1, 
    'champ_2' => $variable_2, 
  ) 
) ->condition('champ_condition', $variable_condition) ->execute();

Pour plus d'infos, je vous invite à jeter un coup d'oeil à l'API de drupal 7.

Via source.

Tags: 

Installation du blog

Bonjour à tous et bienvenue sur ce blog !

Je parlerais de tout mais essentiellement de programmation et de ma vie virtuelle car oui, il y a une vie après la vie ! smiley

Vous le savez peut-être, ma spécialité c'est Drupal. Cela fait maintenant 1 an et demi que je l'utilise et je me débrouille pas mal (enfin je trouve laugh). Donc ce blog me servira bien sûr à partager mes expériences, mes astuces et mes bouts de codes.

Commençons donc par le commencement : ce blog. Et bien oui, il tourne sous Drupal cool ! Drupal 6 pour être précis, et voila la liste des modules tiers que j'ai installé :

Ou plus simplement à l'aide de drush :

drush dl ajax admin_menu addthis ckeditor comment_notify pathauto token geshifilter captcha google_analytics jgrowl fivestar votingapi

drush en ajax admin_menu addthis ckeditor comment_notify pathauto token geshifilter captcha google_analytics jgrowl fivestar votingapi

Pour le thème j'ai choisi BlogBuzz de Astin, il contient pas mal de régions et propose trois jeux de couleurs.

Il est à noter que je traduirais la plupart de mes articles en anglais, il faut bien s'internationaliser cheeky.

Pages

S'abonner à RSS - Drupal