Récupérer le chemin d'un theme Drupal en javascript
5
19 juillet 2010 à 19:01
Cette astuce peut être utile pour récupérer proprement le chemin d'un theme Drupal dans un fichier javascript surtout si l'on est sur une installation multi-sites. Il s'agit de passer une variable php et de la récupérer en javascript.
Dans le fichier template.php, on utilise la fonction drupal_add_js()
<?php
drupal_add_js('jQuery.extend(Drupal.settings, { "pathToTheme": "' . path_to_theme() . '" });', 'inline');
?>Puis dans le fichier .info on déclare un fichier js
scripts[] = js/scripts.jsDans le fichier scripts.js on procède ainsi
$(document).ready(function(){
var chemindutheme = "/"+Drupal.settings.pathToTheme+"/";
console.log(chemindutheme);
});Et dans la console de Firebug on obtient quelque chose comme /sites/www.monsiteweb.com/themes/nomdemontheme/
Quel intérêt ?
Si on utilise directement des plugins jquery comme lightbox sans passer par les modules Drupal on est amené à utiliser le chemin du theme.
$(document).ready(function(){
var chemin = "/"+Drupal.settings.pathToTheme+"/";
// Effet lightbox sur les images
$("a.lightbox").lightBox({
imageBlank: chemin+'css/images/lightbox/lightbox-blank.gif',
imageLoading: chemin+'css/images/lightbox/lightbox-ico-loading.gif',
imageBtnClose: chemin+'css/images/lightbox/lightbox-btn-close.gif',
imageBtnPrev: chemin+'css/images/lightbox/lightbox-btn-prev.gif',
imageBtnNext: chemin+'css/images/lightbox/lightbox-btn-next.gif'
});
});Rappel en php avec Drupal :
<?php print $base_path . path_to_theme(); // chemin du theme ?>
<?php print $base_path.file_directory_path(); // chemin vers "files" ?> Plus d'infos http://www.innovatingtomorrow.net/2008/06/02/jquery-and-drupal
radiative less emitted growing fuel
from radiative less emitted growing fuel on 17 septembre 2010 à 17:48news compared slowly heat
variation jaiku data below
from variation jaiku data below on 01 septembre 2010 à 09:57uncertainty 20th cap
north confirmation address
from north confirmation address on 15 août 2010 à 19:49million relation range email
contribution maximum broader seasonal report
from contribution maximum broader seasonal report on 22 juillet 2010 à 01:55live affected features temperatures



Pourquoi ne pas faire simplement un drupal_add_js(array('pathToTheme' => path_to_theme()), 'setting');
Et n'est il pas préférable d'utiliser les behaviors de Drupal plutôt que l'événement ready de document ($(document).ready()) ?
Juste pour dire que, normalement, il est bon d'utiliser les Drupal.behaviours dans les scripts JS qu'on écrit ;) Plus d'info par là http://drupal.org/node/205296
Tiens, je dois pas être réveillé ... j'avais même pas vu le commentaire juste avant.
Ce blog est merveilleux, merci de nous proposer. Content de voir de nouveaux projets ! Je vous souhaite beaucoup de réussite.
Thank you for posting this. It answered lots of questions which I had.And i like the way that you explain about Drupal.