Comment faire ?

Un collection de tutoriels détaillant la réalisation avec drupal d’un besoin précis.

Afficher un flux RSS sur votre site

Les flux RSS permettent de récupérer des informations depuis un autre site pour les diffuser sur le votre. C’est très pratique quand l’on souhaite récupérer les news d’un site en particulier. Ici notre but est donc de récupérer un flux RSS puis de l’afficher dans un bloc.

Récupérer le flux RSS

Pour pouvoir gérer les flux RSS sous drupal, nous avons besoin d’activer le module aggregator qui est disponible en standard avec Drupal.

aggregator5.png

L’activation du module aggregator fait apparaître une nouvelle entrée dans le menu d’administration. Nous allons donc dans administrer/aggregator. Sur cette page, nous allons créer un flux en cliquant sur ajouter un flux.
aggregator2.png

Cette page va nous permettre de créer notre flux. Il nous faut entrer un nom pour ce flux et l’adresse du flux que nous souhaitons récupérer. L’intervalle de mise à jour est le temps qui s’écoulera entre deux mise à jour du flux sur votre site. Il est préférable de laisser un intervalle d’une heure. Si vous mettez un intervalle plus petit, vous risquez de vous faire rejetter par certains site. En effet sur certains sites, la demande est tellement importante qu’ils rejettent tous les sites qui leurs demande des mises à jour trop fréquente. Validez votre flux, et vous voyez apparaître la liste des flux ainsi que notre flux nouvellement créé. Pour le remplir il suffit de cliquer sur le lien «mise à jour des articles». Voilà notre flux est créé et se mettra à jour toutes les heures. Bien entendu la mise à jour se fait par cron, et donc vous devez avoir configuré cron ou utilisé un module qui se substitue à lui.

Affichage du flux

Actuellement notre flux est créé et accessible via http://votre.site/ ?q=aggregator. Mais nous souhaitons les afficher dans une boite. Nous nous rendons donc dans «administrer/blocs». Et là ô surprise une boite nommé dans notre exemple «flux alertes de sécurité…» a été créé. Il nous reste donc à l’activer et à choisir son emplacement. Il faut savoir que à chaque fois qu’un flux est créé, une boite associée l’est aussi.

aggregator1.png

Ajouter des liens en haut du site

Comment ajouter des liens dans le haut du site pour permettre une navigation aisée ? C’est très simple, sous drupal ces liens s’appels «liens primaires» et «liens secondaires». Ils peuvent être configuré en allant dans administrer/thèmes et ensuite dans «configurer». On peut alors soit les configurer dans les «paramètres globeaux» ou alors pour chaque thème si l’on souhaite que les liens soient différent suivant le thème utilisé.

Attention toutefois, certains thèmes ne prennent pas en compte les paramètres globeaux.

HOWTO : Afficher un bloc contextuel

Le module Views permet, entre autres, de créer des blocs. Ceux-ci peuvent ensuite être insérés dans la mise en page depuis la page d’administration des blocs (/admin/block).

Malheureusement, les blocs ainsi générés afficheront toujours le même contenu quelle que soit la page sur laquelle ils s’afficheront. Cet article vous propose de créer un bloc dont le contenu sera filtré en fonction de la catégorie du noeud affiché.

Imaginons un site web discutant de football et donnant les résultats pour la France. D’un côté vous avez les équipes de football, chaque équipe étant rattachée à un(*) championnat (L1, L2, Nationale, CFA…) par le biais d’une catégorie «Championnat». De l’autre côté vous avez les résultats sportifs, chaque résultat étant également rattaché à un championnat. Il peut être intéressant d’avoir sur la page d’une équipe les résultats des autres équipes de son championnat.

Avec Views, créons une vue «bloc» qui affiche la liste des résultats sportifs (le but de cet article n’étant pas de vous apprendre à créer des vues, nous ne nous étendrons pas plus sur le sujet). Si nous la collons sur toutes les pages, elle affichera les résultats sportifs de toutes les ligues, indépendamment de la page où elle se trouve.

bloccontextuel-editvue.png

C’est là qu’interviennent les «arguments» de la vue. Dans la zone «Arguments» de la vue, ajouter un argument «Taxonomie : identifiant de terme». Dans la liste déroulante «Par défaut», sélectionnez «Retour Page non trouvée». Cela aura pour effet de ne pas afficher le bloc sur les pages ne répondant pas aux critères. Laissez les autres valeurs du champs vides.

bloccontextuel-arguments.png

L’astuce de cet article arrive maintenant. Tel quel, le bloc n’utilise pas les arguments car Views va traditionnellement chercher les arguments dans l’URL. Or, dans le cas d’un bloc, l’URL est réservée au noeud affiché et non au bloc lui-même. Donc pas d’argument.

Il faut utiliser la zone «Code de gestion d’argument».

bloccontextuel-argumentcode.png

Copier-coller le code suivant dans cette zone :

<?php
// Ne fonctionne que dans le cas d'une vue 'block'
if($type=='block') {
 
$vocabulary_id=1; // Vocabulaire rubrique

  // Cela fonctionne uniquement sur les pages noeuds
  if (arg(0) == 'node' && is_numeric(arg(1)) && is_null(arg(2))) {
   
// Récupère les termes du vocabulaire désigné pour le noeud en cours
   
$nid = (int)arg(1);
   
$terms=taxonomy_node_get_terms_by_vocabulary($nid,$vocabulary_id);

    $tids=array();
    foreach(
$terms as $term) {
     
$tids[]=$term->tid;
    }

    $ltids=implode(' ',$tids);

    // Si la liste des termes n'est pas vide...
   
if(strlen($ltids)>1) {
     
$args[0]=$ltids;
    }
  }
}
?>

Note : ne recopiez pas les balises d’ouverture et de fermeture de PHP.

Cet exemple récupère les termes du noeud principal (celui affichant dans le corps de la page) pour les passer en argument, c’est tout ! Pour le réutiliser, déterminez l’identifiant de la catégorie (ici l’ID n°1) et affectez-le à la variable $vocabulary_id.

Pour toute adaptation à vos besoins, le code a besoin uniquement de positionner la variable $args aux bonnes valeurs. Il s’agit d’un tableau indexé 0,1,2,3… où 0 est le premier argument tel qu’il est listé dans la zone «Arguments».

L’exemple prend en compte le cas des valeurs multiples. Pour les transmettre à la vue dans $args, il suffit de les mettre dans une chaîne séparés par des espaces (ex : «10 11 24 12»).

(*) Les puristes me pardonneront cet simplification pour l’exemple.

HOWTO : Faire un Blog sous Drupal

Le Blog est le «truc» à la mode sur internet depuis quelques mois. J’ai donc décidé de m’y mettre aussi et de voir comment Drupal pouvait m’aidé dans cette tâche.
Je partirais du principe que Drupal est correctement installé. Je m’attacherais donc à la configuration de Drupal pour une utilisation particulière : Le Blog.

Quels sont nos besoins ?

Avant de nous lancer dans la configuration, essayons de voir ce qu’est un blog pour mieux cibler nos besoins.

Un blog est avant tout un site personnel où une personne expose ses idées, ses coups de gueules, bref ce qu’elle veut. On veut que les internautes puissent interagir sur le site par l’intermédiare des commentaires. Le but reste d’exposer son point de vue et de le partager, que les internautes puissent réagir.

Installation et choix des modules de base.

Pour l’installation de drupal, je vous renvoie au document qui est présent sur ce site et qui traite de cette partie.

Je considère donc que vous avez réussi à installer correctement drupal sur votre serveur et que vous avez crée le premier compte qui servira de compte d’administration.
Par défaut, il n’y a que 6 modules qui sont activé dans drupal :

  • comment : sert à ajouter des commentaires. Nous en avons besoin dans notre cas.
  • help : affiche les messages d’aide. ça peut toujours être utile
  • node : indispensable. Sans cela nous aurions un site «statique»
  • page : permet de créer des pages qui pourrons être référencées dans le menu. Rarement utilise dans le cas d’un blog.
  • story : permet de créer des articles ou tout autre contenu du même type. Il ne nous servira pas non plus.
  • taxonomy : permet de créer des catégories. Celui ci on le garde.

Donc dans le cas le plus classique, on va désactiver les modules page et story. Par contre on va rajouter les modules blog, search qui permettra à l’internaute de rechercher un mot clé sur votre blog, et je rajouterais le module path qui permet de renommer les liens des billets de notre blog. Par exemple au lieu d’avoir un numéro ce qui est le comportement par défaut de drupal, celui ci peut être nommé mon_premier_billet par exemple. Et aussi le module archive qui permet d’afficher un calendrier sur notre site.

Configuration des droits.

Maintenant que nous avons sélectionné les modules dont nous avons besoin pour faire notre blog, nous allons attaquer la partie concernant les droits d’accès.

Dans un blog, ce qui est intéressant, c’est que les internautes puissent réagir à nos billets. Pour cela il est utile de permettre aux utilisateurs anonymes de pouvoir poster des commentaires.

Dans administrer/utilisateurs cliquez sur l’onglet configurer puis sur droits d’accès. Dans la section commentaires cliquez sur la première et les deux dernières cases. Normalement les deux colonnes doivent être identiques. Ceci a pour effet de permettre aux utilisateurs anonymes de poster des commentaires et de les poster sans approbation de votre part.

Toujours dans la configuration des utilisateurs, vous pouvez retourner sur l’onglet paramètres et choisir si oui ou non vous souhaitez que des personnes crée un compte sur votre site.

Organiser son blog

Pour avoir une meilleur lisibilité auprès de votre «auditoire», il est nécessaire d’organiser la publication de nos billets en catégories. Le module taxonomie (taxinomie en français) sert à cela.

Allez dans administrer/catégories. Sur cette page, sont listés les différentes catégories qui ont été crées sur ce site. Normalement, cette page doit être vide pour l’instant. Cliquez sur l’onglet add vocabulary.
Comme nom, mettez Sujets, dans Types sélectionnez entrée personnel au blog, puis cochez la case Requis. Ceci aura pour effet de nous obliger à choisir un sujet lorsque l’on voudra poster un billet sur notre blog. Validez vos choix en cliquant sur le bouton Soumettre.

Drupal doit alors vous renvoyer sur la liste des vocabulaires qui ont été crée. Cliquez maintenant sur ajouter un terme et choisissez un nom pour ce terme, ça peut être «Linux», «Littérature», ou tout autre nom de sujet que vous souhaitez aborder dans votre blog. Ajoutez autant termes dans Sujets que de sujets dont vous voulez aborder. (je sais c’est pas facile !)

HOWTO : Insérer une image dans un contenu

Bien démarrer avec Drupal… qui n’a pas eu du mal à mettre une image dans son article ?
Et qu’on se le dise une bonne fois pour toute : il n’est pas nécessaire d’installer un quelconque module optionnel pour afficher des images avec Drupal.

Cas 1 : afficher une image présente sur un autre site

Je vous le déconseille car si le site auquel vous vous référez, renomme ou supprime cette image, votre site va la chercher très longtemps (selon le navigateur que vous utilisez)… et votre site sera très lent !

Remarque importante :
Pour utiliser une image présente sur un autre site, vérifier que les droits sont disponibles. Autant vous pouvez généralement afficher sur votre site les logos de tel ou tel logiciel libre (par exemple celui de Drupal), autant une photo personnelle d’un autre site ce n’est pas sûr…
En général, il est conseillé de contacter par courriel le webmaster du site dont vous souhaitez ré-utiliser une image pour lui demander son accord et/ou de consulter les mentions légales du site qui indiquent peut-être les conditions d’utilisation (par exemple en citant l’auteur).

Cas 2 : afficher une image de votre site.

  1. Via client-ftp, créer un dossier (répertoire) images dans le répertoire /files
  2. Via client-ftp, mettre une image dans ce dossier (exemple toto.png, toto.jpg)
  3. Dans drupal, créer (ou éditer) l’article qui devra contenir l’image toto.png
  4. Le format d’entrée «full HTML» doit être coché, le code pour une image est du type :
    <img src="files/images/nom_du_fichier.ext" alt="texte_alternatif" />
    Explications : on utilise la balise img avec les attributs src et alt !
    • la valeur entre guillemet de src est le chemin de votre image : sous drupal je vous conseille de mettre le chemin relatif à partir du répertoire de Drupal. Si vous voulez afficher une image présente sur votre serveur sans qu’elle soit dans le répertoire de Drupal il faut mettre le chemin complet (type http://www.mon_site.ext/dossier/nom_du_fichier.ext
    • la valeur entre guillemet pour alt est le texte alternatif qui s’affichera si votre visiteur n’affiche pas les images et qui sera lu par les navigateurs vocaux. Afin d’améliorer l’accessibilité et le référencement de votre site, n’oubliez pas de renseigner l’attribut alt [On note alt=»» (attribut vide) UNIQUEMENT en cas d’image non significative]

Mise en forme de vos images en CSS

Quelque soit le template que vous utilisez, les contenus (pages, articles…) sont généralement codés avec une balise de classe qui est class="node" (un forum c’est un div#forum).
Pour mettre en forme vos images, il suffit donc de modifier ou créer (selon le template utilisé) une ligne .node img.
Par exemple .node img {border: 1px solid #000000;} encadrera les images présentes dans tous vos contenus Drupal d’une bordure de 1px, continue et de couleur noire.

Pour avoir différents rendus des images présentes dans vos contenus sur votre site, vous pouvez ajouter un attribut class au code de l’image.

Par exemple : vous voulez que les images des contenus «articles» aient un rendu différent du précédent. Pour cela, dans les articles, le code html devient &lt;img class="img_articles" src="files/images/nom_du_fichier.ext" alt="texte_alternatif" /&gt; et vous ajoutez une mention css .node img.img_articles {border: 1px solid #ff0000;} qui encadrera les images d’un article d’une bordure rouge.

Votre image ne s’affiche pas ?

  1. Vérifier le format d’entrée de votre contenu : ce doit être «Full HTML»
  2. Vérifier le chemin : il doit partir de la racine de votre drupal (dans notre exemple files/images/nom_du_fichier.extention_du_fichier.)
  3. Vérifier les permissions par défaut :
    • dans la barre d’adresse du navigateur, mettre le chemin de l’image. (Exemple : via son client-ftp, mettre l’image toto.jpg dans le répertoire files > l’adresse à saisir dans la barre d’adresse sera http://monsite.ext/files/toto.jpg) et voir si l’image s’affiche.
    • si on obtient la page d’erreur «erreur 500» (Internal Server Error / The server encountered an internal error or misconfiguration and was unable to complete your request.)
      Via le client-ftp, supprimer le fichier .htaccess qui existe dans le répertoire /files (obligatoire avec certains hébergeurs… notamment pour les pages perso free.fr)

Bon à savoir…

  • Le module additionnel «images» n’est pas nécessaire pour l’affichage d’image dans votre contenu, par contre si vous l’avez installé (même si vous l’avez désinstallé ensuite), il aura ajouté un fichier .htaccess dans le répertoire /files qui peut poser problème…
  • Bien ranger son Drupal…
    A la première utilisation, Drupal crée un répertoire files : il est prévu pour accueillir, réunir tous vos documents type images, documents .pdf etc…
    Je vous conseille de créer des sous-répertoires dans le répertoire files pour organiser votre contenu. Vous gagnerez un temps précieux quand vous souhaiterez trier ou mettre à jour votre site.

(article initial http://herisson185.free.fr/ ?q=node/35)

HOWTO : Mettre à jour 4.7.x a 5.x

La mise à jour vers la version 5.0 de Drupal est une mise à jour majeure.

Il est donc essentiel de suivre une procédure assez stricte au risque de devoir recommencer l’opération plusieurs fois. Il est également fortement conseillé de partir de la dernière version 4.7 afin de minimiser les problèmes. La mise à jour de 4.6 à 5.0 n’est pas supportée.

Pour réussir cette opération, on pourra s’appuyer sur la checklist suivante :

  • Faire une sauvegarde complète des fichiers ET bases de données du site,
  • Désactiver les modules additionnels, en faisant tout particulièrement attention aux dépendances entre les différents modules et entre les modules et les pages et blocs personnalisés. Par exemple, views peut être utilisé dans du code PHP de blocs ou de pages, il ne peut être donc désactivé sans précautions,
  • Supprimer les dossiers des modules desactivés,
  • Si vous utilisez une page personnalisée comme page d’accueil,
    réinitialiser la page d’accueil sur /node,
  • Desactiver les URLs simplifiées,
  • Desactiver les modules core non-essentiels tels que forum ou blogapi,
  • Configurer bluemarine en tant que thème utilisé.

Le but est d’ici de «déconfigurer» le site le plus possible afin de minimiser les fonctions requises durant la mises à jour. Nous devrions donc avoir maintenant un site très simple, mais contenant toujours l’ensemble du contenu de l’ancien site. Il est donc possible de remplacer les fichiers par leurs nouvelles versions.

  • Télécharger drupal 5,
  • Remplacer les fichiers de l’installation de drupal 4.7 par les fichiers de 5.0 extraits,
  • Utiliser la procédure de mise à jour à partir de votre navigateur en consultant le fichier update.php.

La mise devrait bien se passer vu que seuls les modules essentiels sont activés. Si c’est le cas, il sera ensuite possible de reconfigurer le site avec les urls simplifiés, les modules, etc…

Notez que certains modules n’ont pas encore été mis à jour pour Drupal 5 et c’est ce qui pourrait vous retenir de mettre à jour vos sites. Au moment d’écriture de cet article, Les modules codefilter et captcha n’ont même pas de version CVS pour 5, le module image n’est pas encore très stable. Il est de toute façon toujours préférable de vérifier la disponibilité de vos modules préférés avant de faire le grand saut.

Drupal 5 permet l’utilisation de deux thèmes distincts pour la zone publique et la zone administration. Par défaut le thème d’admin est configuré pour refléter le thème publique. Avant de tester votre thème, je conseille de changer le thème d’admin sur garland afin de ne pas se retrouver coincé si votre thème nécessite une mise a jour du code.

Panels2 et views argument

Merci à Zmove de m’avoir dépanné sur www.drupal.org.
J’avais beau essayé toutes les combinaisons possibles, je n’arrivais pas à faire passer au sein d’un panel (du type node/%) le terme d’un node comme argument dans une view. ( en clair, j’affichais un node et je voulais que la view sur la barre de droite affiche des contenus en rapport avec le terme principal du node )
Il suffisait en fait de supprimer la view’spane et de la réinsérer.
Ca a l’air de rien comme ça, mais j’ai perdu des heures à me fourvoyer.

J’espère que ça aidera quelqu’un.