Logiciels libres, linux, le web...

Aller au contenu | Aller au menu | Aller à la recherche

Web › Drupal

Fil des billets

vendredi, février 11 2011

Drupal : Fin de node picker, bienvenue à LinkIt

Le module drupal node picker n'est plus maintenu, dans l'immédiat ça ne pose pas de grave problème. Mais il vaut mieux trouver un autre moyen pour créer des liens internes.

Je vais expliquer brièvement comment mettre en place LinkIt en gardant le filtre pour node picker afin de ne pas "casser" les liens existants.
Il faut commencer par télécharger LinkIt et Pathologic dont il dépend. Ensuite il faut activer ces deux modules.

  • Configuration de LinkIt : Il faut simplement choisir les options sur la page de configuration (admin/settings/linkit). Sélectionner ce qui sera affiché dans les résultats et les types de contenu vers lesquels on pourra mettre des liens.
  • Configurer le filtre : Il faut aussi configurer les formats d'entrés qui vont utiliser la syntaxe des liens créés par LinkIt. Dans la page de configuration des formats d'entrée (admin/settings/filters) sélectionnez le format d'entrée qui va utiliser LinkIt et ajoutez le filtre "pathologic". On laisse le filtre "Node Picker" afin que les liens créés avec celui-ci continuent de fonctionner.
  • Enfin il faut activer le plugin "LinkIt" dans l'éditeur, pour TinyMce il faut se rendre dans les profils wysiwyg (admin/settings/wysiwyg/profile) puis dans la configuration du filtre il faut décocher "Node Picker" et cocher "LinkIt".


J'espère que cela pourra aider ceux qui utilisaient Node Picker à passer à LinkIt en douceur, mais surtout que cela incitera les autres à ne pas utiliser Node Picker mais directement LinkIt.

mercredi, septembre 1 2010

Drupal : Supprimer le lien vers le blog de l'utilisateur dans le thème

Voici une petite astuce pour supprimer l'affichage du lien vers le blog de l'utilisateur dans le thème.
Dans le cas où vous n'avez qu'un seul utilisateur qui publie sur le site drupal, il n'est pas nécessaire d'afficher un lien vers le blog de l'utilisateur. Le chemin /blog provoquera le même affichage que le chemin /blog/x (où x est l'id de l'utilisateur), cela paraît donc inutile d'afficher un lien vers le deuxième chemin.

Pour ne pas afficher le lien en question il suffit d'implémenter la fonction phptemplate_links() dans le fichier template.php. Il faut remplacer phptemplate par le nom de votre thème. Cette astuce peut être valable pour retirer n'importe quel lien de l'affichage, cette version est valable pour le lien "blog_usernames_blog" :
function phptemplate_links($links, $attributes = array()) {
   unset($links['blog_usernames_blog']);
   return theme_links($links, $attributes);
}

Merci ckng pour son commentaire.

mardi, août 17 2010

Liste (non-exhaustive) de modules indispensables pour drupal 6

Je vais tenter dans ce billet de présenter les modules pour drupal 6 qui sont indispensables. Autant en matière de d'administration, de référencement, de navigation, d'éditeurs, de prise en charge d'images et de vidéos, gestion d'évènements et de localisation.

Modules généraux


Parmi les modules généraux qui sont indispensables pour drupal on peux choisir ceux-ci :

  • CCK - Content Construction Kit : Ce module aide à la création de nouveaux types de contenu. Il sera intégré à Drupal dans la version 7. Il permet de définir de nouveaux champs pour les types de contenu tels que des images, des champs textes, des listes, des dates ou encore des vidéos flash.
  • Views : Ce module permet de créer des vue de n'importe quelle forme pour les types de contenu. Une interface permet même de créer des vues sans utiliser des lignes de code. Les vues créés peuvent être des pages, des blocks, des flux rss ou encore des vues personnalisées tels que du contenu au format JSON.
  • Panels : Ce module a été créé au début pour créer des gabarits de pages avec des colonnes, des en-têtes, des pieds de page de façon très simple. Depuis la version 3 il permet d'intégrer n'importe quel type de contenu dans une zone définie. Il est très pratique pour créer les pages d'accueil mais il est bien plus puissant que ça grâce à la possibilité de définir des relations et des contextes de sélection. N'hésitez pas à essayer ce module, vous allez l'adorer.


Modules d'administration


Parmi les modules très utiles pour l'administration on peut en trouver deux qui sont vraiment indispensables :

  • Admin Menu : Ce module permet de disposer d'un menu déroulant où tous les items du menu d'administration sont présent. Cela permet d'accéder directement à une section d'administration au lieux de parcourir toutes les sections.
  • Root Candy : Ce module est en fait un thème dédié à l'interface d'administration. La version 7 de Drupal disposera directement d'un thème pour l'administration, ce module est très utile pour drupal 6.


Modules pour le référencement


Il existe aussi quelques modules qui permettent a un site de bénéficier d'un meilleur référencement, même si drupal génère au code html déjà très efficace de ce point de vue.

  • Path Auto : Ce module permet de générer automatiquement des alias pour le contenu, en fonction du titre des pages et de plein d'autres informations sur un noeud. Cela permet d'avoir des adresses lisibles par les humain au lieu du simple node/<un numéro>.
  • Global Redirect : Ce module est très utile associé à Path Auto il permet de mettre en place des redirections 301 vers les pages ayant un alias afin d'éviter le contenu dupliqué. Cela n'est plus indispensable d'après un article du blog google mais cela permet au moins de ne pas dérouter les utilisateurs.
  • Page Title : Ce module permet de personnaliser les titres des balises <title> et <h1> afin qu'ils soient différents des titres du noeud.
  • NodeWords : Ce module permet comme son nom de l'indique pas de personnaliser les balises <meta> des pages.
  • Service Links : Ce module permet aux visiteurs de partager du contenu sur les principaux réseaux sociaux.
  • Printer, e-mail and PDF versions : Ce module n'est pas forcément utile pour le référencement même si d'avoir une version PDF de son contenu peut y contribuer, il permet aussi d'envoyer par e-mail le contenu.


Modules pour la Navigation :


  • Menu Block : Ce modules permet de créer un menu à partir d'une certaine profondeur. Cela est très utile pour reprendre le contenu d'un sous enu dans une certaine partie d'un site. Le menu généré est un block.
  • Taxonomy Menu : Ce module permet de créer un menu à partir de catégories créées grâce à un vocabulaire. Il peut directement être utilisé avec les modules Panels et Views.
  • Custom Breadcrumbs : Ce module permet de personnaliser le "fil d'ariane" du site, cela permet d'avoir autre chose qu'un lien vers l'accueil pour le contenu n'ayant pas de catégories défini.
  • Nice Menu : Ce module permet de créer simplement un nombre important de menus déroulant.


Modules d'édition :

  • WYSIWYG API : Ce module permet d'installer différents éditeurs en définissant un socle commun pour tous les éditeurs.
  • IMCE : Ce module permet d'avoir un navigateur de fichier pour intégrer les images dans les différents éditeur. Afin de fonctionner avec wysiwyg api il faut installer un autre module : IMCE Wysiwyg bridge.

Modules de gestion d'images et de vidéos :

  • File Field : Ce module permet le chargement de fichier en tant que champ CCK, il est très utile tel quel mais aussi nécessaire à d'autres modules.
  • Image API : Module très utile pour réaliser des opérations sur les images côté serveur, il permet de tirer parti de imageMagik ou GD selon l'extension disponible.
  • Image Cache : Modules servant à automatiser les opérations de Image API pour certains chargement d'images.
  • Image Field : Module très bien intégré à CCK et Views, lorsqu'il est utilisé avec Image API et Image Cache ce modules est très puissant pour gérer différents affichages d'images.
  • Lightbox 2 : Ce module permet d'afficher les images dans une fenêtre modale intégrée à la page sans recourir à une nouvelle fenêtre. Il peut aussi servir à afficher des diaporamas.
  • Embedded Media Field : Ce module permet d'intégrer des vidéos tels que celle de youtube, dailymotion ou pleins d'autres à un type de contenu.


Modules de localisation :

  • Location : Fournit un moyen standard d'enregistrer des adresses et des coordonnées, ce module est très bien intégré avec Views et CCK.
  • GMap : Ce module permet d'afficher des lieux grâce à Google Maps.

Module de gestion d'évènements :

  • Date : Champ CCK permettant de stocker des dates et des périodes.
  • Calendar : Module fournissant un calendrier intégré à Views qui est facilement modifiable grâce à celles-ci.



Je m'arrête là pour cette liste qui n'est pas exhaustive, il y a certainement un grand nombre d'autres modules très utiles. Si vous en connaissez n'hésitez pas à commenter cet article.

mercredi, juin 30 2010

Cheat sheet pour les thèmes drupal 6 en français

En surfant sur le web à la recherche d'informations à propos de Merise (ne me demandez pas pourquoi) je suis tombé sur une page qui parlait d'une cheat sheet pour les thèmes drupal 6. C'est suffisamment pratique pour que j'en fasse un billet même court. J'ai d'ailleurs décidé de publier plus souvent des billets, ils seront donc forcément plus courts.
Document trouvé via Je m'empale avec Drupal sur le site de Eric Bellot le billet en question se trouve ici.

mardi, avril 27 2010

Drupal - Afficher une vue dans le thème

J'ai voulu afficher une vue que j'avais créé sur la page d'accueil. J'ai lu à plusieurs endroits que l'on pouvait créer un "template" front-page.tpl.php. La modification que j'avais à apporter à la page d'accueil était trop simple pour changer tout le "template".
J'ai donc utilisé la variable "$is_front" pour déterminer si la page actuelle était la page d'accueil.
Si c'est le cas la fonction "views_embed_view($view_name, $display_id = 'default');" en remplçant $view_name par le nom de la vue que l'on veut afficher permet d'afficher la vue à l'endroit désiré.

Drupal - Afficher des images pour les éléments de menu.

Pour créer un menu avec Drupal qui permet d'afficher des images au lieu du texte habituel, il y a plusieurs solutions. J'ai choisi d'en présenter une dans ce billet. J'ai trouvé cette technique ici.
Cette technique consiste à modifier la fonction theme_menu_item_link($link). Il suffit d'ajouter une condition si le champ description de l'élément du menu contient une image : // If menu item is an image
if(strpos($link'localized_options''attributes''title', '<img') === 0) {
// Allow HTML if the menu description is an image tag:
$link'localized_options''html' = TRUE;
// exchange description with title
$tmp = $link'localized_options''attributes''title';
$link'localized_options''attributes''title' = $link'title';
$link'title' = $tmp;
}
Il suffit d'ajouter ce bout de code à votre fichier template.php au sein de la fonction theme_menu_item_link($link).

Il faut ensuite modifier le format d'entrée que vous utilisez pour les menus (Par défaut c'est "Filtered HTML") afin d'y ajouter la balise "<img>" dans les balises autorisés.
Pour mettre une image à la place de l'intitulé du menu il faut ensuite modifier l'entrée de menu pour mettre l'adresse de l'image dans le champ description, le champ titre servira pour renseigner l'attribut "title" du lien hypertexte.

jeudi, avril 22 2010

Comment éliminer les doublons d'une vue avec Drupal (views)

J'ai utilisé une vue (module views) pour afficher une liste de critères. Mais ces critères correspondaient à un champ CCK. Je n'ai donc pas pu utiliser la fonction "distinct", avec le module views cette fonction ne porte que sur le "nid". J'ai recherché des modules me permettant d'utiliser la clause "group by" de la requête, malheureusement les seuls modules que j'ai trouvé ne pouvait pas l'appliquer au champs mais seulement aux arguments de la vue.

J'ai trouvé une astuce grâce au site drupalfr.org, j'ai un peu modifié la solution proposée par le module de Stephen Musgrave. J'ai retiré la condition sur "current_display" car je voulais que le traitement s'effectue systématiquement sur ma vue.

Le module s'appelle "viewsremoveduplicates" il suffit donc de créer les deux fichiers "viewsremoveduplicates.info" et "viewsremoveduplicates.module" dans un dossier "viewsremoveduplicates" placé dans le dossier sites/all/modules de 'linstallation de Drupal.
Voici le contenu des deux fichiers :

viewsremoveduplicates.info :
name = Views Remove Duplicates
description = Removes duplicate nodes. Requires editing the module file to identify the views you want to affect.
package = "Views"
core = 6.x
dependencies = views


viewsremoveduplicates.module :
function viewsremoveduplicates_views_pre_render(&$view)
{
$used_nids = array();

if ($view->name == 'block_event_dpt')
{

foreach ($view->result as $row)
{
if (!in_array($row->node_data_field_event_dpt_field_event_dpt_value , $used_nids))
{
$new_view_result = $row;
$used_nids = $row->node_data_field_event_dpt_field_event_dpt_value ;
}
}

$view->result = $new_view_result;

}
}

J'applique le traitement seulement pour la vue que je désire, dans ce cas elle s'appelle "block_event_dpt".
Le champ que je sélectionne porte le nom "node_data_field_event_dpt_field_event_dpt_value".
Vous devez modifier ces valeurs afin qu'elle conviennent à votre cas.

La prochaine fois je ferais un module sans utiliser views !

mardi, février 23 2010

Gérer le chargement d'images dans drupal avec IMCE et tinymce

Cet article a pour but de présentent une méthode simple pour mettre en place le chargement (upload) d'images dans drupal 6 à l'aide de imce et tinymce. Imce peut fonctionner avec d'autres éditeurs tels que fckeditor. Je ne présenterais dans cet article qu'une méthode pour l'utiliser avec tinnymce, mais cela n'est pas plus difficile avec d'autres éditeurs.

Modules nécessaires


Afin de nous permettre de gérer le chargement des images directement dans tinymce nous allons utiliser imce. Nous aurons besoins d'installer 3 modules :


Pour compléter l'installation de wysiwyg nous allons télécharger la dernière version de tinymce et l'extraire dans le répertoire "sites/default/libraries".

Installation des modules

Installez ensuite les trois modules dans votre installation de dupal.
Une fois l'installation des modules terminé, nous allons configurer le module imce afin d'attribuer des permissions aux "utilisateurs identifiés" (rôle créé par drupal). Nous allons conserver les paramètres par défaut de IMCE. Il existe un profil appelé User-1 que nous allons attribuer au rôle "utilisateur identifié" (admin/settings/imce).
Attribution d'un profil à un rôle dans IMCE Si vous utilisez imce pour un site en production, vous devez bien sûr affiner les rôles en conséquence. Si vous utilisez les modules Google Analytics ou Secure pages vous devez gérer leur configuration en ajoutant le chemin imce* à la liste des exceptions.
Ensuite nous allons configurer le module wysiwyg (admin/settings/wysiwyg). Nous allons attribuer au format d'entrée "Full HTML" l'éditeur "Tinymce". Après avoir enregistré ce paramètre nous allons modifier la configuration de tinymce (lien "modifier"). Dans la section "Boutons et Plugins" cochez toutes les options que vous voulez activer ainsi que le plugin "IMCE". Cela permettra d'intégrer imce lors de l'insertion d'images ou d'autres medias. Accès à imce à partir de l'outil "image" de tinymce Chargement de fichier avec imce
Voici comment intégrer facilement la gestion du chargement des images dans tinymce grâce au module imce et imce_wysiwyg dans drupal.

mardi, mai 26 2009

Installation de Drupal avec lighttpd / MySql et les URL simplifiées (Clean URLs)

Drupal est un CMS que j'aime bien, vous pouvez trouver une description d'après le site : Drupal est un logiciel qui permet aux individus comme aux communautés d'utilisateurs de publier facilement, de gérer et d'organiser un vaste éventail de contenus sur un site web. Des dizaines de milliers de personnes et d'organisations utilisent Drupal pour propulser des sites de toutes tailles et fonctions.
Site officiel : http://drupal.org/

Installation

Pour installer Drupal, nous allons utiliser lighttpd avec le support de php et mysql.
Vous devez récupérer l'archive sur le site ici. Si c'est nécessaire vous pouvez télécharger l'archive des traductions en français.
Pour installer lighttpd avec le support de php vous pouvez vous aider de ce tutoriel : http://howto.landure.fr/gnu-linux/debian-4-0-etch/installer-lighttpd-et-php-sur-debian-4-0-etch
Nous allons créer un utilisateur et une base de donnée pour drupal, vous pouvez naturellement changer les noms. On peut utiliser les commandes suivantes ou un outil tel que phpMyadmin :

$ mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 43

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql> CREATE DATABASE drupal;
Query OK, 1 row affected (0.00 sec)

mysql> use drupal
Database changed

mysql> grant all on drupal.* to drupaluser@localhost identified by 'password';
Query OK, 0 rows affected (0.00 sec)

Base de données : drupal / nom d'utilisateur : drupaluser / mot de passe : password

Fichiers de l'application

Il faut extraire les fichiers de l'archive de drupal :
# cd /var/www/
# tar -xzvf /dossier/de/l'archive/drupal-6.12.tgz
Ensuite on peut extraire les fichiers de traductions :
# tar -xzvf /dossier/de/l'archive/fr-6.x-1.0.tgz
Donner la permission au serveur web (pour debian www-data) et créer le dossier des fichiers de drupal :
# mv drupal-6.12/ drupal
# mkdir drupal/sites/default/files
# chown -R www-data:www-data drupal/

Ensuite il faut créer le fichier de configuration et lui attribuer les droits nécessaires pour le modifier :
# cp drupal/sites/default/default.settings.php drupal/sites/default/settings.php
# chmod g+w drupal/sites/default/settings.php


Fin de l'installation


Rendez vous ensuite à l'adresse de drupal http://localhost/drupal/ par exemple et suivez les instructions du programme d'installation. Pour la base de données, entrez les valeurs que vous avez choisi lors de sa création (dans cet exemple : drupal / drupaluser / password).


Mise en place des URL simplifiées avec Lighttpd (Clean URLs)

Cette technique pour mettre en place les URL simplifiées est basé sur cet article. L'auteur met en pièce jointe un script qui permet d'adapter les règles de réécriture correctement.
Le script est disponible ici : http://more.zites.net/morefiles/lighty-drupal-lua-conf.tar.gz.

Préparation de lighttpd

Nous allons utiliser le module magnet de lighttpd, pour l'installer on peut entrer les lignes suivantes dans un terminal :
# apt-get install lighttpd-mod-magnet

Une fois le module installé, il faut l'activer à l'aide des commandes suivantes :
# lighty-enable-mod magnet
Available modules: auth cgi fastcgi magnet proxy rrdtool simple-vhost ssi ssl status userdir
Already enabled modules: fastcgi
Enabling magnet: ok
Run /etc/init.d/lighttpd force-reload to enable changes
# /etc/init.d/lighttpd force-reload

Il faut ensuite installer le paquet lua qui va nous permettre d'interpréter le script de l'article cité plus haut. Sous debian vous pouvez utiliser la commande suivante :
# apt-get install lua50

Mise en place des scripts

Nous pouvont maintenant extraire les scripts dans le répertoire de lighttpd (/etc/lighttpd/) :
# tar xvzf lighty-drupal-lua-conf.tar.gz
# chmod +x drupal-lua-conf.sh
Il ne reste plus maintenant plus qu'à ajouter ces lignes au fichier /etc/lighttpd/lighttpd.conf :

 $HTTP["host"] =~ "localhost" {
   include_shell "./drupal-lua-conf.sh drupal"
 }

Le paramètre du script (ici "drupal") correspond au dossier dans lequel drupal est installé.
et après avoir redémarré lighttpd rendez vous dans la section Administrer / Configuration du site / URL simplifiées pour activer le tout.