Existe-t-il une manière définitive et universelle de procéder? Par exemple, en utilisant une variable d'environnement fournie avec Drupal.behaviours
?
J'ai fait quelques recherches et il ne semble pas y avoir de réponse commune.
7
nodes
javascript
therobyouknow
la source
la source
drupal_add_js()
; le nid n'est jamais utilisé côté client par cœur, il n'est donc pas nécessaire de l'ajouter en tant que paramètre en généralRéponses:
Comme mentionné ci-dessus, le noyau Drupal n'a aucune utilité pour l'ID de nœud côté client, il ne le transmet donc pas. si vous voulez y accéder, vous devrez l'ajouter manuellement:
Ensuite, côté client, vous y aurez accès via
Drupal.settings
:la source
class
attribut du thème de bootstrap. En fin de compte, nous visons une solution indépendante du thème.$setting = array('MYMODULE' => array('currentNid' => $node->nid));
le=
est étranger. Cela a fait le travail - a collé votre code sur cette fonction qui existait déjàpop_links
et a ajouté votre javascript danspop_links.js
.Comme mentionné par MPD dans sa réponse, travailler avec les classes css par défaut générées par Drupal pour l'élément est une solution simple qui fonctionne sans code PHP personnalisé.
Voici notre implémentation:
la source
var $body = $('body.path-node');
(testé avec zurb_foundation pour 8.x-6.x)La valeur par défaut
template_preprocess_html()
contient ce morceau de code dansCela collera les classes à la
<body>
ligne d'élémentpage-node-123
. Si vous ne souhaitez pas utiliser votre propre code dans un module personnalisé, vous pouvez obtenir les classes via jQuery , trouver celle qui correspondpage-node-
, puis analyser le nid.la source
Ce qui a fonctionné pour moi, c'est d'ajouter la ligne suivante à mon
page.tpl.php
modèle. Cela ajoute l'ID de nœudwindow.Drupal.settings.nid
auquel vous pouvez utiliser à volonté en JavaScript.Comme suggéré dans les commentaires, voici le code pour ajouter l'ID de nœud à partir de
template.php
:la source
template_preprocess_page
place (si vous en avez besoin au niveau de la page). Pour ne pas mélanger les choses et garder les modèles aussi propres et lisibles que possible. Les modèles doivent être utilisés pour le balisage.settings
etsetting
?