CategoryDrupal 7

[Drupal 7][Drush] Astuces, commandes utiles

Activer un module précédemment installé

drush en -y <nom_du_module>

Obtenir des FILE NAME SUGGESTIONS

drush vset theme_debug 1 génère dans le DOM du front:

… où x node.tpl.php représente le fichier utilisé actuellement.

Si on crée le fichier node--view--roederer-home-actualites.tpl.php, les FILE NAME SUGGESTIONS sont modifiées dans le DOM du front:

Résolution d’erreurs front via Drush

User warning: The following module is missing from the file system: .

[Drupal 7] Afficher une image dans un fichier node.tpl.php présent dans un thème

Source. Ceci sous-entend de récupérer l’URL vers l’image stockée dans un thème.

[Drupal 7] Monter en version de jQuery avec le plugin jQuery Multi

Nativement, Drupal 7 est livré avec la version 1.4.4 de jQuery. Cette version est nécessaire pour faire fonctionner correctement la partie administration et quelques widgets et modules populaires du front.

Il existe un plugin jQuery Update, mais il ne permet de monter que jusqu’à la version 2.1.x.

Le plugin jQuery Multi permet quant à lui d’utiliser une version plus récente (au choix du développeur).

Avant toute installation, créer un dossier <racine_de_mon_projet>/sites/all/libraries/jquery/ qui contient la version de jQuery qu’on souhaite utiliser. Le libellé du fichier doit être sous la forme suivante: jquery-<version>.js. Exemple: jquery-3.0.0.min.js.

Installer ensuite le module. On peu le faire avec Drush et la commande suivante (qui permet d’installer et d’activer le module immédiatement) :

Chaque plugin jQuery que vous souhaiterez utiliser sous couvert de la version déclarée par le plugin jqmulti devra:

  • être copié dans <racine_de_mon_projet>/sites/all/libraries/ (à chaque librairie son dossier)
  • être déclaré via le BO. Sous Configuration > Systeme > jQuery Multi Settings

Pour finir, n’oubliez pas que le code devant être exécuté avec jQuery 3.0.0 devra être encapsulé de la sorte avec un alias jq300 (pour « jQuery-3.0.0 ») :

[Drupal 7] Les différentes techniques pour ajouter/supprimer des ressources CSS/JS

Ressources généralistes sur le sujet :

Supprimer les CSS Core :

Peut se faire par le biais du hook_css_alter via le fichier template.php du thème.

Attention: dans le cas ou certaines CSS sont déclarées comme étant des dépendances du module contrib, il ne faut pas déclarer le module contrib mais ce qui semblent être des sous-modules… (en commentaires dans l’exemple ci-dessous, les déclarations qui ne fonctionnent pas) :

…ce qui nous donne au propre :

Charger/Ne pas charger certaines ressources CSS/JS si l’utilisateur est anonyme/connecté:

Avec les hooks user_is_anonymous et user_is_logged_in:

Remplacer la version de jQuery par défaut (via CDN)

Peut se faire par le biais du hook_js_alter via le fichier template.php du thème :

[Drupal 7] Conflit Drupal7/NPM – Erreur « segmentation fault » à l’utilisation de Drush

Problème:

Erreur de segmentation (core dumped) au lancement de la commande Drush permettant de vider les caches.

Solution:

Il s’agit en fait d’un conflit entre Drupal7 et Npm. Drupal7 stocke des informations relatives au thème dans un fichier *.info. Certains paquets Npm ont également des fichiers *.info. Lorsque Drush vide les caches, il parcourt l’arborescence projet à la recherche de fichiers *.info et ne sait pas faire la différence entre ceux de Drupal7 et ceux des modules Npm (généralement stockés dans un dossier node_modules au même niveau d’arborescence que le fichier package.json.

La solution est ici, sous Important: Preventing segmentation fault. J’avais, en premier lieu, tenté cette technique à peu près similaire, mais les fichiers *.info présents dans les paquets Npm ne s’effaçaient pas (problème de droits ?).

Dans votre package.json, ajouter les lignes suivantes :

Créez également un fichier .npmrc avec un formatage « Unix » (Dans Sublime Text 3: View > Line endings > Unix) qui contient le code suivant :

Si les fichiers *.info ne se suppriment pas avec cette méthode :

Vous pouvez toujours le faire à la main depuis le shell :

[Drupal 7.x] Les formulaires

[Drupal 7.x] Ajouter une CSS ou un JS conditionels via les preprocess functions

Voir notamment au niveau de la méthode path_to_theme() et de l’option group pour choisir l’ordre de chargement des fichiers.

On peut également affiner la position de chargement de la CSS avec l’option weight :

[Drupal 7.x] Ajouter de nouvelles variables à un thème qui peuvent être exploitées dans page.tpl.php

Objectif: ajouter dans template.php une variable footer_message pour afficher une phrase dont l’intitulé change si l’internaute est loggué ou pas.

Déclarer la nouvelle variable footer_message

Un petit kpr($variables); pour vérifier en front que la variable a été créée :

Dans le code HTML (page.tpl.php) :

Ajouter la condition if($variables[‘logged_in’])

Ajouter le nom de l’utilisateur loggué :

[Drupal 7.x] Les preprocess functions dans template.php

Initialiser un fichier template.php à la racine de votre thème :

Afficher les hooks disponibles dans la page

Afficher l’ordre dans lequel les hooks sont chargés dans la page

Petite info supplémentaire par rapport à la fonction précédente :

Seulement quand le hook page est chargé (1x par chargement de page) :

On passe le hook page dans le nom de la fonction. Plus besoin de le passer en argument.

Voir quelles variables sont disponibles

Changer la valeur de la variable « site_solgan » dans une preprocess function

Un slogan qui s’affiche en random

On crée un tableau $slogans qu’on remplit avec différents slogans qu’on fera s’afficher de manière choisie au hasard et alternée :

Des locales avec la fonction t()

Utiliser la fonction t() pour mettre en place du texte traduisible en plusieurs langues :

[Drupal 7.x] Le fichier *.info : le point de départ pour intialiser un thème

© 2020 devfrontend.info

Theme by Anders NorénUp ↑