dev

[Resolu] Problème avec le module Parallax

Bonjour à tous, je suis entrain de développer mon site web et je rencontre un problème avec le module Parallax de Drupal.
A vrai dire j'ai réussi à mettre l'image sur le site, l'effet Parallax fonctionne parfaitement mais j'ai un message d'erreur qui s'affiche et que je n'arrive pas à faire disparaitre... J'ai essayé de regarder un peu sur les sites anglophones mais malheureusement je n'ai pas compris leurs résolutions.

Le message d'erreur :

Par benftwc

Les mille-et-unes façons de reset un password sous Drupal

Comment efficacement et simplement reset un password sous Drupal

Quelques fois, souvent même, en testant ou développant ses sites, il peut arriver que l’on ai besoin de reset le password d’un utilisateur, pour ce faire, voici un concentré de solutions, toutes testées et fiables :)

# Avoir un lien de connection en Administrateur
drush uli

# Modifier le mot de passe de l'utilisateur choisit
drush upwd [user] --password="newpassword"

# Dans le repertoire courant de votre site
php scripts/password-hash.sh 'drupal'
# Utilisez le résultat (un password hashé)
drush sql-cli
update users set name='admin', pass='[votre hash ici]' where uid=1;
quit

# Obtenir un lien d'oublis de mot de passe
drush php-eval 'echo user_pass_reset_url(user_load(1));'

Sur Drupal 6, la seule façon dont je me souvienne :

drush sql-cli
# ou
mysql -u -p <drupal_db>
# ---
UPDATE users SET name='admin', pass=md5('drupal') WHERE uid=1;

The post Les mille-et-unes façons de reset un password sous Drupal appeared first on Benftwc.

Par benftwc

Installer Drush avec Composer

Drush est un outil indispensable pour développer sous drupal, il permet de contrôler son instance de site via le terminal pour les taches quotidiennes sur un site : téléchargement, activation de modules, vidage de cache, mise à jours de modules ou du core… Une fois que l’on y a goûté, on ne peut plus s’en passer.

Il existe un tas de méthode pour installer drush et il est parfois difficile de s’y retrouver : via les dépôts, PEAR, installation manuelle… Mais maintenant le moyen de plus simple est d’utiliser composer.

Si vous n’avez pas composer d’installé :

curl -sS https://getcomposer.org/installer | php
sudo mv composer.phar /usr/local/bin/composer

Ensuite on peut installer Drush :

Pour la version 6 (compatible avec drupal 6 et 7) :

composer global require drush/drush:6.*

Pour la version 7-dev (compatible avec drupal 6, 7 et 8, mais en cours de développement) :

composer global require drush/drush:dev-master

La documentation complete de Drush ayant subi une mise à jour, voici son url : http://www.drushcommands.com/
Personnellement j’utilise la version 6 de drush en production et la version 7 en local, me permettant de l’utiliser sur Drupal 8.

Si vous souhaitez participer au projet, je vous invite à vous rendre sur leur repos github/a>.

Vous pouvez également consulter mon précédent article traitant de Drush ici :)

The post Installer Drush avec Composer appeared first on Benftwc.

Par benftwc

Drupal Multisite et Travail collaboratif

Pourquoi le Multisite ?

Pour vous permettre de travailler en équipe sur un même projet, sans parler de CVS, Drupal a pensé au fichier sites.php, dédié aux « Multi-sites », soit, plusieurs sites au sein d’une seule instance de Drupal.

Drupal Multisite

Drupal Multisite

Le Drupal Multisite est généralement utilisé pour séparer plusieurs univers (tels que membre.site.fr et admin.site.fr), mais également plusieurs environnements techniques (Windows – Linux, Apache – NGinX).

Structure et mise en place du Drupal Multisite

Le mettre en place est extrêmement simple :

<?php
  $sites['subdomain.domain.tld'] = 'environnement';
?>

Pour reprendre la structure ci-dessus, la clé de $sites correspond à l’url et la valeur correspond au répertoire de configuration de l’environnement. (dans notre exemple, ROOT/sites/environnement).

Mise en place dynamique

Pour aller plus loin, et nous permettre de baser notre environnement en fonction du développeur, nous allons utiliser une variable d’environnement qui servira à séparer chaque base de donnée, pour chacun de vos développeurs / intervenants.

Cette variable est à renseigner dans le VHOST pointant vers votre instance Drupal

SetEnv APPLICATION_ENV dev-username

Avec ici autant d’utilisateurs que vous voudrez, en gardant 1 environnement / Vhost / URL !

Pensez également à versionner les config, cela évitera en cas de soucis de perdre toutes vos configurations !

<?php

// sites/sites.php
$env = getenv('APPLICATION_ENV');
if (!empty($env)) {
    $sites[$_SERVER['SERVER_NAME']] = $env;
}
?>

En sauvegardant ce code dans votre sites.php, vous serez capable de travailler à plusieurs développeurs sur une même instance de Drupal. Pensez également à synchroniser de temps en temps vos bases de données si nécessaire, cette technique n’est pas « viable » lorsque vous travaillerez avec trop de personnes.

Aller plus loin

Dans ce cas, il faudra prévoir de passer par des méthodes plus « Drupal », soit, par le biais de hook_update, d’export Features-Strongarm, ou de modules Custom ne nécessitant que très peu de configuration.

The post Drupal Multisite et Travail collaboratif appeared first on Benftwc.

Par benftwc

Drupal et le Responsive Design

Drupal responsive design

Drupal responsive design

Avant tout, sur Drupal, le Responsive Web Design, c’est quoi / pour qui ?

Avec le nouvel essor des plateformes mobiles et la naissance des webapps, il est aujourd’hui devenu primordial à toute société de posséder son propre site « responsive webdesign » (que j’abrégerais RWD), c’est-à-dire, un site adapté, calculé et affiché différemment en fonction du support (mobile, tablette, ordinateur, téléviseurs).

Cependant, si cette fonctionnalité n’est pas pensée au début, il peut vite devenir fastidieux de le mettre en place.

Je distingue 2 grandes réponses au « problème » du RWD : La mise en place d’un template « full RWD » et la mise en place d’un thème dedié.

Template Full RWD

Cette solution est la plus simple car tout se passe au niveu de votre intégration, soit, HTML + CSS + JavaSript. Cette solution ne touchant pas à Drupal, et étant traité par Marie Guillaumet (Refonte de mon portfolio partie 1 et partie 2), je n’en parlerais pas plus ici.

Le thème dedié

Le thème dédié est plus pratique dans certains cas, notamment quand le site est déjà sorti, avec toute une intégration de prévue et pas de temps pour le refaire. Néanmoins, cela impliquera autant de modifications et de temps de maintien que de thèmes dédiés.

La technique est simple ici, il vous suffit d’utiliser le module Mobile Tools avec lequel vous allez pouvoir détecter quel est le support du visiteur, et lui fournir un thème différent en fonction du retour.

De cette manière, vous aurez par exemple desktop_mondesign et mobile_mondesign, les deux adaptés au contenu (soit PC pour desktop, smartphone/iphone pour mobile).

De plus, le module embarque des options de configuration pour CCK, Display Suite, Panels … En soit, la méthode est plus compliquée à mettre en place, mais permet une réelle séparation des fichiers, ce qui n’est pas le cas de la première  méthode.

The post Drupal et le Responsive Design appeared first on Benftwc.

Par benftwc

Drupal : utiliser, c’est bien, contribuer, c’est mieux !

Sous Drupal, nous le savons, il existe une myriade de modules, tous plus intéressant que les autres. Seulement, savez-vous qui se cache derrière ? Toute une communauté !

Un module, avant d’être utilisé par des milliers de sites, doit passer par quelques étapes, à commencer par la sandbox. Cette Sandbox permet aux développeurs d’envoyer leur modules à la communauté afin d’obtenir des retours, des tests, et des patchs.

Je vais vous parler un peu plus en détail des patchs.

Un « patch », kézako ?

Un patch est tout « simplement » un fichier texte, contenant un différentiel produit par GIT. Pour avoir une idée, vous pouvez exécuter cette ligne :

$ git diff

Vous devriez voir apparaître toutes les modifications apportées sur tout les fichiers de la branche courante sous cette forme :

diff --git a/currency_converter.admin.inc b/currency_converter.admin.inc
index e644435..487862f 100644
--- a/currency_converter.admin.inc
+++ b/currency_converter.admin.inc
@@ -11,7 +11,7 @@
  */
 function currency_converter_admin_settings() {

-  $default_weight = array('BYR' => 0, 'RUB' => 1, 'EUR' => 2, 'USD' => 3, 'CAD' => 4, 'PLN' => 5, 'UAH' => 6, 'CNY' => 7, 'LTL' => 8, 'LVL' => 9);
+  $default_weight = array('BYR' => 0, 'RUB' => 1, 'EUR' => 2, 'USD' => 3, 'CAD' => 4, 'PLN' => 5, 'UAH' => 6, 'CNY' => 7, 'LTL' => 8, 'LVL' => 9, 'JPY' => 10, 'GBP' => 11, 'CHF' => 12, 'AUD' => 13, 'HKD' => 14, 'INR' => 15);
   $weight = variable_get('currency_converter_weight', $default_weight);
   asort($weight);

Comme vous pouvez le remarquer, certaines lignes débutent par un « - », d’autres par un « + ». Simplement, les lignes avec « - » ont étés supprimées, celles avec un « + » ajoutées.

Comment créer un patch

Pour créer un patch, c’est très simple, peu de connaissances GIT sont requises.

Une fois vos modifications effectuées, testées puis validées, vous n’avez qu’une commande à entrer pour générer le patch :

 $ git diff > fichier.patch

Et c’est tout ! Il vous restera ensuite de suivre les règles de nommage, puis d’envoyer votre patch sur Drupal.

Contribuer au module, de A à Z

Bien, voici donc les étapes détaillées à suivre afin de maintenir un module


## Première étape : On récupère notre projet, sous la bonne version
$ git clone --branch X.x-X.x http://git.drupal.org/project/projectname.git projectname
$ cd projectname

## Nous sommes donc dans le répertoire crée par GIT, contenant les sources du module

A présent que le projet est copié, nous pouvons travailler dedans et effectuer nos modifications

## A présent que toutes nos modifications sont faites, nous pouvons passer à la création du patch
$ git diff > [description de ce que vous avez modifié][numéro du ticket][numéro du commentaire].patch

A présent, vous savez créer vos patch et les envoyer. Regardons comment en utiliser un.

Appliquer un patch

Une autre façon de contribuer est d’appliquer les patchs pour les tester et faire un retour au développeur.

Encore une fois, très peu de connaissances GIT sont requises

$ git apply -v fichier.patch

Vous êtes fins prêt.

Partez à la conquete de nouveaux modules à débugger ! Drupal.org vous propose également ces 2 liens :

Patch Bingo et Bug Bingo

Vous y trouverez de manière aléatoire un module / thème qui nécessite une intervention.

Vous trouverez d’autres infos sur les slides de @simongeorges et @Artusamak, disponibles ici

The post Drupal : utiliser, c’est bien, contribuer, c’est mieux ! appeared first on Benftwc.

Par benftwc

Ne « Bootstrap » pas Drupal, utilises Drush !

Lorsque vous faites du développement sous Drupal, vous serez amenés à exécuter des scripts PHP, effectuer des traitements sur différents champs ou nodes.

Dans ses situations, créer un module dédié à ces quelques tests / scripts serait une perte de temps.

Dans ce cas, créer un script PHP et « bootstrap » Drupal pour avoir accès à certaines fonctions telles que node_load, user_load ou db_select.

Drupal Bootstrap

Pour « bootstrap » Drupal, vous avez besoin d’ajouter ces lignes dans votre script :


<?php

// Drupal Bootstraping.
$drupal_core_path = $_SERVER['DOCUMENT_ROOT'];
define('DRUPAL_ROOT', $$drupal_core_path);
require_once DRUPAL_ROOT . '/includes/bootstrap.inc';
drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);
// Drupal Bootstrap loaded.

// Do something.
$user = user_load(1);

Pour s’exécuter, le script doit être placé à la racine du répertoire Drupal, puis vous aurez à lancer dans un navigateur et aller sur http://www.votresite.fr/mon_script.php 

C’est long hein ? C’est justement là que Drush entre en jeu.

La puissance de Drush

Drush dispose d’une foule de méthodes, celle qui nous intéresse ici est « Drush Script » (alias. Drush scr). Elle permet d’exécuter le script depuis la ligne de commande :


$ drush scr mon_script.php

De plus, Drush s’occupant du bootstrap, vous pouvez transformer votre script en :

<?php

// Drupal is already Bootstrapped
// We can use Drupal functions

$user = user_load(1);

Après, par habitude, je n’aime pas laisser traîner trop de scripts dans la racine de mon projet. J’ajoute mes scripts dans un répertoire « custom » qui contient tous les scripts. Ça me permet notamment d’éviter les erreurs lors de suppression des scripts d’exécuter les dis scripts sur d’autres installations de Drupal, rien qu’en déplaçant les sources :-D

 $ drush scr ../custom/mon_script.php 

The post Ne « Bootstrap » pas Drupal, utilises Drush ! appeared first on Benftwc.

Par benftwc

[Drupal] Envoyer un mail avec drupal_mail

drupal_mail

Pour envoyer un mail avec drupal_mail(), je vous invite à lire cette implémentation (réutilisable) du « comment faire » ;)

<?php


/**
 *
 * Implements hook_menu()
 * Call a custom form as menu callback
 * @return
 *   $items array of menu items created programmatically
 */
function test_menu() {

  $items['test'] = array(
    'title' => t('Send Email Using Drupal mail'),
    'page callback' => 'drupal_get_form',
    'page arguments' => array('test_custom_form', 1),
    'access arguments' => array('access content'),
    //'file' => 'test.inc',
    //'file path' => drupal_get_path('module', 'test') . '/includes',
  );
  return $items;
}


/**
 * fucntion to return custom form on menu callback
 * @param 
 *   type $form an array consists of form fields
 * @param 
 *   type $form_state an array consists of form fields values input a user
 * @return 
 *   $form returns array of dorm fields.
 */
function test_custom_form($form, $form_state) {

  $form = array();
  $form['email'] = array(
    '#type' => 'textfield',
    '#title' => 'To Email',
    '#prefix' => '<div id="email-field-wrapper">',
    '#suffix' => '</div>',
    '#required' => TRUE,
  );
  $form['from_email'] = array(
    '#type' => 'textfield',
    '#title' => 'From Email',
    '#prefix' => '<div id="from-email-address">',
    '#suffix' => '</div>',
    '#required' => TRUE,
  );
  $form['email_body'] = array(
    '#type' => 'textarea',
    '#title' => 'Email Body',
    '#prefix' => '<div id="email-body">',
    '#suffix' => '</div>',
    '#required' => TRUE,
  );
  $form['submit_form'] = array(
    '#type' => 'submit',
    '#value' => t('Send Email'),
    '#submit' => array('test_custom_form_submit'),
  );
  $form['#validate'] = array('test_custom_form_validation');
  return $form;
}

/**
 * validation function for custom form
 * check for vadlidation for email address.
 * @param type $form
 * @param type $form_state 
 */
function test_custom_form_validation($form, &$form_state) {
  $mail = $form_state['values']['email'];
  $from_email = $form_state['values']['from_email'];
  if (!valid_email_address($mail)) {
    form_set_error('email', t('Please Enter a valid to email address.'));
  }

  if (!valid_email_address($from_email)) {
    form_set_error('from_email', t('Please Enter a valid from email address.'));
  }
}

function test_custom_form_submit($form, &$form_state) {
  drupal_set_message("form is submitted, thanks");
  $email_content = get_mail_content($form_state);
  $params = array('body' => $email_content);
  $key = 'test_email';
  $to = $form_state['values']['email'];
  $from = $form_state['values']['from_email'];
  $mail = drupal_mail('test', $key, $to, language_default(), $params, $from);
  // for better understanding,you can uncomment the following
 // dpm($mail);

}

/**
 * Implements hook_mail()
 * @param 
 *   type $key to decide which email body to sent on basis of key parameter inacese of multiple email content
 * @param 
 *   type $message the email content to be sent.Message array contains 'subject and body ' for the email.
 * @param 
 *   type $params using to get the cusotm email content from a function.This can be used in my other ways aslo as per need.
 */
function test_mail($key, &$message, $params) {
  $language = $message['language'];
  switch ($key) {
//switching on $key lets you create variations of the email based on the $key parameter
    case 'test_email':
      $message['subject'] = t('Test Email');
//the email body is here, inside the $message array
      $message['body'][] = $params['body'];
      break;
  }
}

/**
 * function to get the html formatted email content
 * @param 
 *   type $form_state to get values from form fields.
 * @return 
 *   $body type string return the html email content 
 */
function get_mail_content($form_state) {

  $email_to = $form_state['values']['email'];
  $pos = strpos($email_to, '@');
  $user_name = substr($email_to, 0, $pos);
  $body = '';
  $body .= 'Hi ' . $user_name . '<br>';
  $body .= 'Please find my test email. <br>';
  $body .= $form_state['values']['email_body'] . '<br>';
  $body .= 'Thanks<br>';
  $body .= 'TestTeam';
  return $body;
}

The post [Drupal] Envoyer un mail avec drupal_mail appeared first on Benftwc.

[Résolu] Créer un module sous Drupal 7

Bonjour,

Voici mon problème. J'aimerais créer un module sous Drupal 7. J'ai suffisamment de connaissances en php pour créer les fonctions principales qui sont déjà faites. En gros c'est déja fonctionnel mais je ne sais pas comment faire en sorte que sous drupal il y ai une interface pour afficher mes options...

Je résume j'ai une page "monModule.module" en php brut. Ca sera l'interface (options de mon module) comment puis-je faire pour y accéder par un lien depuis l'admin?

Merci d'avance!

Cordialement,