Drupal

Warning: strtotime() [function.strtotime]: It is not safe to rely on the system's timezone settings.

Si vous avez mis à jour le PHP d'une version 5.2 à 5.3, vous risquer surement de tomber sur ce Bug lors de la modification d'un noeud sur Drupal.

Afin d'éviter ces erreurs il existe deux possiblités:

1 - Dans le fichier php.ini (Bien sûre si vous avez accès) ajouter ceci:

[Date]
; Defines the default timezone used by the date functions
date.timezone = "votre fuseau horaire"

Sur certain navigateur et dans l'exemple d'un champ CCK du module Colorpicker dans un groupe de champ, la fenêtre de sélection de la couleur s'affiche mal et donc impossible de chager la couleur.

Pour éviter ce bug juste rajouter à la feuille de style CSS cette ligne:

.colorpicker {
	z-index:10;
}

Voici une fonction que j'utilise très souvent pour faire des requettes, plus performante (cache views) et facile à créer, Drupal dans la base de données.

Cette fonction est utilisé par le module views de Drupal et qui permet de récupérer un tableau de résultats de la vue :

Voici un exemple:

// $name : est le nom de la vue
// $display_id: le type d'affiche qu'on souhaite utiliser exemple default
 
 views_get_view_result($name, $display_id )

La fonction PHP t() de Drupal permet de traduire un texte dans une autre langue.

Il existe une deuxième fonction, même utilité, mais cette fois-ci pour le javascript: Drupal.t()

Voici un exemple simple de ceci:

alert (Drupal.t ('Hello'));

Le Drupal.t () peut prendre jusqu'à deux arguments. Ils sont (dans l'ordre):

1. La chaîne qui devrait être traduite.
2. Un nom d'objet contenant des paires valeur / de substitution dans la chaîne.

Voici un bref exemple qui utilise à la fois:

var params = {

Le module Search de Drupal combiné avec le module Node indexe, par défaut, tous les types de contenus. Maintenant si on veut choisir parmi les types de node à indexer, voici deux solutions que j'utilise pour choisir les types de noueds à indexer:

- La première consiste à activer le module search_config, mais cette solution est pratique si on veut utiliser que le module search et ces fonctions de recherche.

Il existe un superbe module dans Drupal qui nous permet de structurer les nodes d'une manière hiérarchisé parent enfant sous enfant, ce module est Node Hierchy.

Par contre ce module manque un peu de développement et surtout sa version 2.x qui tarde à venir.

Dans cette exemple on va s'intéresser au poids du fieldset de ce module qui est à 10 par défaut.

J'utilise la fonction  hook_content_extra_fields() de CCK qui nous permet de gérer ça.

Voici une petite astuce pour récuperer l'url du site sous Drupal:

<?php
  url(NULL,array('absolute' => True));
?>

Pour ajouter un fichier CSS ou javascript dans notre développement Drupal dispose d'une fonction pour cela:

<?php
 
  // Ajouter un fichier CSS
  drupal_add_css($path = NULL, $type = 'module', $media = 'all', $preprocess = TRUE);
 
  //Ajouter un fichier js
  drupal_add_js($data = NULL, $type = 'module', $scope = 'header', $defer = FALSE, $cache = TRUE, $preprocess = TRUE);
 
?>

Voici comment récuperer le chemin relative d'un module ou d'un thème

<?php 
  // Pour les modules
  drupal_get_path('module','nom_du_module');
 
  //Pour les themes 
  drupal_get_path('theme','nom_du_theme');
?>

Sur cet exemple, on va voir comment on peut configurer Drupal pour se connecter sur plusieurs bases de données.

Pour commencer je reviens sur le faite que Drupal enregistre les configurations de la BDD sur le fichier sites/default/settings.php et c'est là où on va changer un peu notre configuration.

Pour la BDD c'est stocké sous l'un de ces formats (selon notre type de BDD) :

* $db_url = 'mysql://username:password@localhost/databasename';
* $db_url = 'mysqli://username:password@localhost/databasename';
* $db_url = 'pgsql://username:password@localhost/databasename';

Une erreur sur les dernières versions de views quand on utilise comme argument un tid (identifiant du terme)

Voici l'erreur comme elle s'affiche :'views_plugin_argument_default' not found in
\sites\all\modules\views\modules\taxonomy\views_plugin_argument_default_taxonomy_tid.inc

Pour contourner cette erreur quand on utilise les arguments de la taxonomy:

--- taxonomy.views.inc	2010-04-06 12:59:29.000000000 -0700
 
+++ taxonomy.views.inc	2010-04-13 15:19:03.000000000 -0700
 
@@ -462,6 +462,7 @@ function taxonomy_views_plugins() {

Voici comme on peut recuperer les valeurs d'un champ CCK pour l'utiliser dans un autre module :

<?php
  $fields = module_invoke('content', 'fields','nom_fileld');
  $values = module_invoke('content','allowed_values',$fields);
?>

Un probleme dans la tabulation du module quicktabs sous IE 7.

Un patch existe sur ce lien http://drupal.org/node/487518

le patch est :

Index: quicktabs.js
 
===================================================================
 
--- quicktabs.js	(revision 26)
 
+++ quicktabs.js	(working copy)
 
@@ -41,13 +41,11 @@
 
   this.tabIndex = el.myTabIndex;
 
   this.qtid = el.qtid;
 
   var qtKey = 'qt_' + this.qtid;
 
-  var i = 0;
 
   for (var key in Drupal.settings.quicktabs[qtKey].tabs) {
 
-    if (i == this.tabIndex) {

Le module soundmanager ne lit pas correctement le player !!!!!

La solution :

Dans le fichier soundmanager2_config.js à la ligne 10, il faut tout simplement désactiver le useHighPerfermance.

Voici donc comment on peut utiliser CCK pour utiliser le poids d'un champ dit "extra" qu'on a crée et qu'on veut le placer dans notre formulaire de node, selon le classement fait dans la gestion des champs de cck.

Voici les démarches et les fonctions à utiliser:

<?php
  /**
  * Implementation of hook_content_extra_fields.
  */
  function hook_content_extra_fields($type_name) {
    $extra['champ'] = array(
        'label' => t('Etiquette'),
        'description' => t('description du champ'),
        'weight' => 0,
    );