Planète

Par GoZ
Fabien CLEMENT

Premiers clics sous OpenAtrium 1-BETA4

openatrium

1. Introduction

Development Seed vient de passer sa plateforme collaborative basée sur Drupal 6 à la version 1.0-BETA4. Des chiffres, des lettres, une beta de plus... Oui, mais pas n’importe quelle beta !

Outre la modification du thème avec ré-agencement des boutons, fil d’ariane, logo, diminution de la taille du header et bien d’autres permettant une visibilité accrue, la principale attente de cette nouvelle béta-mouture se trouve dans l’utilisation des versions 3.x des modules spaces et context, 2.x pour le module Admin et la suppression de FeedsAPI par Feeds.

Nous allons faire un premier état des lieux en explorant le potentiel des nouvelles fonctionnalités ainsi que l’ergonomie de l'interface disponibles juste après une installation basique (utilisation des modules activés par défaut uniquement).

en lire plus

Par GoZ
Fabien CLEMENT

Installer OpenAtrium sous MAMP

1. Introduction

Avec la sortie de OpenAtrium 1.0-beta4, j'ai bien entendu voulu le tester et ainsi pouvoir voir les améliorations apportées par rapport à la version précédente.

Travaillant depuis peu sous Mac, j'ai installé MAMP pour pouvoir faire mes tests rapidement en local (peut-être n'est-ce pas la meilleure solution pour développer sous mac, je reste ouvert à toute proposition).

Premier tour de roue, installation de drush et drush_make pour pouvoir suivre les étapes de l'installation fournies par Development Seed : http://openatrium.com/node/35.

en lire plus

Par badgones

Vue Calendrier avec Drupal - Gestion d'évènements

Gérer des contenus événements et un agenda en vue calendrier avec Drupal

Très bon article publié sur le site http://www.davidpetit.com/blog/drupal/gerer-contenus-evenements-agenda-vue-calendrier-drupal.
Je me permet de le recopier pour mémo.
 
 
Attention, cet article est pour Drupal 6, la version Drupal 7 est ici : Tutorial : Vue Calendrier avec Drupal 7 et Views 3, gestion des événements

 

Bonjour ! Il existe plusieurs méthodes pour gérer des événements et un agenda sous Drupal. Ceci dit, je souhaite partager avec vous la méthode que j'utilise pour y arriver. J'expliquerai aussi comment obtenir un affichage avec calendrier. On utilisera donc pour ceci les modules CCK, Views, Date et Calendar. Je suppose ainsi pour ce tutorial que vous savez installer des modules dans Drupal.

Installation des modules

La première chose à faire, est d'installer les modules requis:
Le rôle de ces modules : 
CCK est un module qui sert à créer des champs personnalisés dans ses propres types de contenu.
Views est un module qui permet de créer des affichages précis de tous les types de contenus ou d'éléments dans Drupal.
Date est ajoute le champ de type date aux champs disponibles dans CCK.
Calendar permet de faire des affichages de type calendrier dans Views.

Création du type de contenu "Evénement"

Une fois les modules installés, nous allons commencer par créer le contenu personnalisé qui représentera les événements. Pour cela, il faut aller dans "Gestion du contenu -> Types de contenu -> Ajouter". Vous remplissez vos champs et vous devriez obtenir quelque chose qui ressemble à ceci:

en lire plus

Par GoZ
Fabien CLEMENT

DrupalForFirebug - Debugger Drupal avec Firebug

1. Présentation de DrupalForFirebug

Lors du développement de sites sous Drupal, il est souvent nécessaires à un moment donné d'obtenir des informations sur des variables maisons ou gérées par Drupal. A titre indicatif, les plus courantes sont $node ou $form.

DrupalForFirebug permet donc d'afficher dans Firebug le contenu de variables par l'intermédiaire d'une méthode firep() et donne en tout temps le contenu des variables courantes drupal : $form, $node, $view, requêtes sql.

Nous allons voir dans un premier temps comment installer le module puis les fonctionnalités disponibles.

en lire plus

Par Artusamak
Julien Dubois

Créer des templates (fichier.tpl.php) pour themer vos modules

Lors de la création de vos modules vous pouvez être amenés à mettre en forme votre contenu pour garder une approche cohérence avec la dissociation fond / forme. Il est donc nécessaire de donner la possibilité au themer de pouvoir modifier la mise en forme du contenu que vous aller afficher.
Afin de rendre une telle action possible, vous allez devoir déclarer au sein de votre module un hook_theme, qui va déclarer les éléments qui pourront être themés via vos templates.
Le hook_theme est simplement constitué d’un tableau d’éléments skinnables avec pour chaque entrée une clé « template » qui correspond au nom du fichier .tpl.php utilisé pour le theme et une clé « arguments » correspondant à un tableau de paramètres à passer à la fonction de theme().

function hook_theme() {
  return array(
    'my_themeable_call' => array(
      'template' => 'gabarit.tpl.php',
      'arguments' => array("param1" => NULL),
    ),
  );
}

A noter : Le « .tpl.php » est facultatif car toujours suggéré par le moteur de template et il est recommandé d’utiliser le même nom comme clé et comme nom de fichier pour le template. (Les noms sont ici différents pour vous permettre de décortiquer la mécanique). [Merci Cyril pour la remarque]

Voilà votre fonction de thème déclarée, il ne reste plus qu’à l’utiliser.
Prenons l’exemple d’un bloc, vous souhaitez utiliser votre fonction de thème dans son contenu, il vous suffit d’utiliser dans le contenu du bloc (cf hook_block) votre fonction de theme : $bloc['content'] = theme(‘my_themeable_call’, $param1);
De cette façon vous enverrez à votre fichier de template la variable $param1 (pouvant contenir tout type de données). Si vous omettez de passer un argument, la valeur par défaut déclarée dans le hook_theme sera utilisée (dans notre exemple si j’omets $param1, sa valeur sera NULL).

Plaçons-nous maintenant dans notre fichier de template gabarit.tpl.php, c’est le fichier que votre themer pourra surcharger en le copiant collant dans le dossier de son thème.
Les variables à disposition sont celles que vous avez passé en paramètres lors de l’appel de la fonction de thème (ici $param1) et les éventuelles variables ajoutées par les fonctions de preprocess. (La signature de la fonction est template_preprocess_my_themeable_call, surchargeable par THEME_preprocess_my_themeable_call).

De cette façon vous pouvez donc créer vos propres fichiers de theming lors de la publication de vos modules afin de vous faire adorer par les themers !

tag

Par GoZ
Fabien CLEMENT

Installer gedit-drupal

1. A propos Gedit-drupal

Gedit-drupal est composé d'un plugin et de snippets qui permettent de faciliter le développement sous Drupal.

Nous allons voir ici comment installer le plugin sous ubuntu (qui doit pouvoir s'appliquer à n'importe quelle distribution GNU Linux munie de Gnome).

Cet article s'appuie sur les indications fournies sur http://github.com/mavimo/gedit-drupal et sur le site de son auteur mavimo : http://mavimo.org/drupal/

2. Préparer son poste

en lire plus

Par GoZ
Fabien CLEMENT

Plugin Symbol Browser pour Gedit et Drupal

Plugin-symbol-browser permet d'afficher les méthodes, variables etc d'un code spécifique. Dans notre cas, nous voulons pouvoir afficher les informations de notre développement drupal.

Avant tout, il est nécessaire d'installer le paquet ctags. Sous ubuntu, ce paquet est disponible via les dépôts.

apt-get install ctags

La procédure d'installation du plugin se trouve sur le site de Micah Carrick

en lire plus

Par Simon Georges
Simon Georges
Drupal depuis plus de 10 ans, SEO depuis 3 ans

Makina Corpus recrute !

Afin d'accompagner sa croissance, Makina Corpus recrute et propose encore plus de postes en CDI dans ses agences de France et de Tunisie

Par badgones

Drupal, Drush et Cygwin

Activer la commande drush sous Cygwin

 

Afin de pouvoir lancer drush en ligne de commande dans la console de cygwin, il suffit de rajouter la ligne suivante dans le fichier path/to/drush/drush :

[[ $(uname -a) == CYGWIN* ]] && SCRIPT_PATH=$(cygpath -w -a -- "$SCRIPT_PATH")

 

Cette ligne est à mettre directement sous la ligne SELF_PATH=xxxxx (au début du fichier).

 

Par GoZ
Fabien CLEMENT

Documentation: Diaporama

1. Introduction

Cet article est une documentation à l'utilisation du module Diaporama pour le CMS Drupal.

Les commandes sont des commandes à effectuer sous linux en mode console. On supposera que vous disposez des droits de votre utilisateur web (exemple www-data pour un ubuntu classique).

en lire plus

Par GoZ
Fabien CLEMENT

Mise à Jour Diaporama-5.x

1. Hors Propos

A partir de maintenant, je vais tâcher de publier sur ce site régulièrement les mises à jour fournies sur drupal.org pour le module diaporama.

Cela commence donc avec la dernière version du module pour drupal 5 : diaporama-5.x-2.0

en lire plus

Par Artusamak
Julien Dubois

Récupérer la valeur de l’autoincrément

Il peut vous arriver d’avoir besoin de récupérer la prochaine valeur utilisée par l’autoincrement au sein de vos applications, hors de question de récupérer la valeur de l’id, de lui ajouter un, de jouer le sioux en ajoutant une variable qui stockerait quelque part l’id en essayant de dupliquer l’autoincrément. Nul besoin de tout cela, MySQL peut nous retourner cette valeur comme un grand garçon !

Pour cela, il suffit d’utiliser la requête suivante :

 $query = db_query("SHOW TABLE STATUS LIKE '{node}'");

En remplaçant bien sûr {node} par le nom de votre table. Notez que les accolades sont propres à drupal, cela permet d’ajouter le préfix spécifié par l’utilisateur dans la configuration de la base de données au moment de l’installation.

Cette requête vous retourne un tableau différentes informations sur la table. Je vous invite à consulter la documentation de SHOW TABLE STATUS pour connaître les champs retournés.
Il ne vous reste plus qu’à stocker votre valeur dans une variable pour en faire ce que bon vous semble.

$row = db_fetch_array($query);
$next_id = $row['Auto_increment'];

En espérant que ça servira à certains d’entre vous.

Par badgones

Mise en place du Freelinking sous Drupal

Introduction au liens internes (Freelinking)

Permet la céation de liens à partir de syntaxe de type Wiki : CamelCase et [[lien]] ou [[lien|texte du lien]]. Lorsque le noeud existe, il est automatiquement relié à ce terme.  Dans le cas contraire, 2 possibilités s'offrent à nous via la configuration du module :

  • création automatique de la page avec attribution du type de contenu désiré
  • affichage de la page de recherche pour signifier que la page demandée n'existe pas
Par badgones

Items d'un menu Drupal avec classe CSS unique pour chaque

Ajouter une classe CSS sur chaque lien d'un menu Drupal

function helpdrupal_id_safe($string) {
  // Replace with dashes anything that isn't A-Z, numbers, dashes, or underscores.
  $string = strtolower(preg_replace('/[^a-zA-Z0-9_-]+/', '-', $string));
  // If the first character is not a-z, add 'n' in front.
  if (!ctype_lower($string{0})) { // Don't use ctype_alpha since its locale aware.
    $string = 'id'. $string;
  }
  return $string;
}

// menu items with unique classes for each menu item
function helpdrupal_menu_item($link, $has_children, $menu = '', $in_active_trail = FALSE, $extra_class = NULL) {
    $class = ($menu ? 'expanded' : ($has_children ? 'collapsed' : 'leaf'));
    if (!empty($extra_class)) {
        $class .= ' '. $extra_class;

Par badgones

Fonctions de pré-process pour Drupal

Preprocess Fil d'Ariane

/**
 * Return a themed breadcrumb trail.
 *
 * @param $breadcrumb
 *   An array containing the breadcrumb links.
 * @return a string containing the breadcrumb output.
 */
function phptemplate_breadcrumb($breadcrumb) {
  if (!empty($breadcrumb)) {
    return '<div class="breadcrumb">'. implode(' › ', $breadcrumb) .'</div>';
  }
}

 

Par Artusamak
Julien Dubois

Comment activer l’upload de fichier via FCKeditor ?

Suite à la demande du client il se peut que vous ayez besoin d’activer l’upload de fichier via l’éditeur de texte riche afin de pouvoir facilement insérer des images dans votre contenu.
FCKeditor vous donne la possibilité d’insérer des fichiers dans vos documents.

Pour cela, il faut vous rendre sur la page d’administration de FCKeditor (Administrer > Configuration du contenu > FCKeditor)

Pour les profils auxquels vous souhaitez donner les droits en upload, cliquer sur Modifier et dans la partie File Browser settings faire deux choses :

  • Passer l’option Allow quick uploads à true
  • Sélectionner la méthode d’upload de fichier via l’option File browser type.
    • Si vous sélectionnez « Aucun », l’utilisateur aura juste un champ Parcourir pour envoyer son fichier.
    • Si vous choisissez « Built-in filebrowser » vous pourrez utiliser l’interface de FCKeditor qui permet entre autres de créer des sous-répertoires et de réinsérer des fichiers précédemment uploadés.

Après avoir fait cela il se peut que vous rencontriez le message d’erreur suivant si vous vous jetez sur votre champ de texte pour tester l’upload :

This connector is disabled. Please check the « editor/filemanager/connectors/php/config.php » file.

Pour corriger cette erreur il faut modifier le fichier de configuration de FCKeditor afin d’indiquer où uploader les fichiers sur votre serveur. Le fichier à modifier est le suivant : « sites/all/modules/fckeditor/fckeditor/editor/filemanager/connectors/php/config.php ».

Les modifications à y apporter sont très simples, voilà une portion de code :

// Activer l'upload de fichier en passant la valeur à "true"
$Config['Enabled'] = true ;

// Indiquez le chemin relatif à votre DocumentRoot pour uploader les fichiers
$Config['UserFilesPath'] = '/files/' ;

// Indiquez le même répertoire que $Config['UserFilesPath']
// mais de façon absolue cette fois.
$Config['UserFilesAbsolutePath'] = '/var/www/lequipe/www/files/' ;

Si un message d’erreur apparait lorsque vous tentez d’uploader un fichier, vérifier le chemin de votre répertoire d’upload (syntaxe et droits d’accès).

Après avoir fait cela vous devriez maintenant pouvoir jouir de l’upload de fichier grâce à votre éditeur de texte riche.

Par Artusamak
Julien Dubois

Comment choisir entre Drupal et les autres CMS ?

Lors de la phase de lancement d’un projet, une question est récurrente, pour quelle solution technique opter ? Le chef de projet a assimilé les besoins du client, il a établi les fonctionnalités du site, il ne reste plus qu’à choisir la technologie à employer.

Dans un premier temps il est en général simple de trancher entre CMS et framework, l’un étant adapté pour de la publication de contenu et l’autre étant plus adapté pour des besoins très précis, il faut préférer le framework au CMS lorsque la majorité des fonctionnalités du site ne sont pas couvertes par le CMS.

Mais si l’on doit se tourner vers un CMS, comment trancher ? Il y a beaucoup de produits sur le marché et quels sont les atouts des uns et des autres.

Je vous propose donc de découvrir une présentation que j’ai traduis d’une version anglaise (réalisée par la société finlandaise Exove) qui compare quatre CMS : WordPress, CMS Made Simple, eZ Publish et Drupal.
Pour chaque CMS, les principales qualités et les principaux défauts sont listés, un comparatif est fait avec Drupal et une slide résume dans quelle situation préférer tel ou tel CMS à Drupal.

Cette présentation est amenée à évoluer, l’objectif qui pourrait être utile à Drupal serait d’élargir aux autres principaux CMS du marché afin d’en faire découler un tableau comparatif qui pourra être réutilisé par les commerciaux et autres décideurs lors des avant-ventes de vos projets. Cette démarche peut s’inclure dans le chantier marketing du groupe france de Drupal.

Si vous êtes tenté(e) d’élargir cette présentation foncez publier un commentaire et si le coeur vous en dit, rejoignez le groupe france de Drupal.
N’hésitez pas à vous impliquer ou à impliquer votre société, la communauté a besoin de vous pour grandir.

Télécharger la présentation

Par Artusamak
Julien Dubois

La fin du .info

La fin du .info
mar, 26/05/2009 - 17:40
Haza

L'arrivée prochaine de Drupal 8 marquera la mort d'un (des nombreux) aliens de Drupal : le fichier ".info".

Ce fameux ".info", indispensable à tout module, thème ou encore profil d'installation sera remplacé dans un fichier YAML.

Évidemment, la principale motivation de ce changement est de pouvoir assurer une certaine consistance avec le reste de drupal (le nouveau système de routage utilisera aussi des fichiers YAML). Et bien sûr, l'adoption de la norme YAML consiste également en un switch vers un format bien connu et surtout standard.

Ce changement se traduit donc par la conversion de tous les anciens fichiers ".info" en ".info.yml".

Pour la majorité des anciennes instructions, le simple remplacement des "=" en ":" fera le plus gros du boulot.
Pour toutes les déclarations qui avaient la forme de tableaux (c'est à dire, avec un "[]" dedans), la forme sera :

dependencies:
  - node

Autre exemple avec les feuilles de style, anciennement de la forme :

; Stylesheets
stylesheets[all][] = css/layout.css
stylesheets[all][] = css/style.css
stylesheets[print][] = css/print.css

Ceci deviendra :

# Stylesheets
stylesheets:
  all:
    - css/layout.css
    - css/style.css
  print:
    - css/print.css

Comme vous avez pu le voir dans l'exemple précédent, pour insérer un commentaire, il ne faudra plus utiliser un ";" mais un "#" en début de ligne.

Enfin, on note l'arrivée d'une nouvelle clé : "type". Celle-ci, obligatoire, aura pour valeur "module", "theme", ou encore "profile". Je crois que vous avez compris son fonctionnement là, non ?

Un exemple complet avec le thème "Seven".

Drupal 7 :

name = Seven
description = A simple one-column, tableless, fluid width administration theme.
package = Core
version = VERSION
core = 7.x
stylesheets[screen][] = reset.css
stylesheets[screen][] = style.css
settings[shortcut_module_link] = 1
regions[content] = Content
regions[help] = Help
regions[page_top] = Page top
regions[page_bottom] = Page bottom
regions[sidebar_first] = First sidebar
regions_hidden[] = sidebar_first

Drupal 8 :

name: Seven
type: theme
description: 'A simple one-column, tableless, fluid width administration theme.'
package: Core
version: VERSION
core: 8.x
stylesheets:
  screen:
    - style.css
stylesheets-override:
  - vertical-tabs.css
  - vertical-tabs-rtl.css
  - jquery.ui.theme.css
settings:
  shortcut_module_link: '1'
regions:
  content: Content
  help: Help
  page_top: 'Page top'
  page_bottom: 'Page bottom'
  sidebar_first: 'First sidebar'
regions_hidden:
  - sidebar_first
Tags

Pages