Gibt es einen endgültigen, universellen Weg, dies zu tun? Verwenden Sie beispielsweise eine Umgebungsvariable, die mit Drupal.behaviours
?
Ich habe einige Nachforschungen angestellt und es scheint keine gemeinsame Antwort zu geben.
7
nodes
javascript
Therobyouknow
quelle
quelle
drupal_add_js()
. Die NID wird auf der Clientseite nie vom Kern verwendet, daher muss sie normalerweise nicht als Einstellung hinzugefügt werdenAntworten:
Wie oben erwähnt, hat der Drupal-Kern keine Verwendung für die Knoten-ID auf der Clientseite, sodass sie nicht weitergeleitet wird. Wenn Sie darauf zugreifen möchten, müssen Sie es manuell hinzufügen:
Auf der Client-Seite haben Sie dann Zugriff auf
Drupal.settings
:quelle
class
Attribut aus dem Bootstrap-Thema bereitgestellt hat . Letztendlich streben wir eine themenunabhängige Lösung an.$setting = array('MYMODULE' => array('currentNid' => $node->nid));
Das=
ist irrelevant. Das hat den Job gemacht - Ihren Code an diese Funktion angeheftet, die bereits in vorhanden war,pop_links
und Ihr Javascript hinzugefügtpop_links.js
.Wie von MPD in seiner Antwort erwähnt, ist die Arbeit mit den Standard-CSS-Klassen, die Drupal für das Element generiert, eine einfache Lösung, die ohne benutzerdefinierten PHP-Code funktioniert.
Hier ist unsere Implementierung:
quelle
var $body = $('body.path-node');
(getestet mit zurb_foundation für 8.x-6.x)Die Standardeinstellung
template_preprocess_html()
enthält dieses Codebit inDadurch bleiben Klassen an der
<body>
Elementzeile haftenpage-node-123
. Wenn Sie keinen eigenen Code in einem benutzerdefinierten Modul verwenden möchten, können Sie die Klassen über jQuerypage-node-
abrufen, die passende finden und dann die NID analysieren.quelle
Was für mich funktioniert hat, ist das Hinzufügen der folgenden Zeile zu meiner
page.tpl.php
Vorlage. Dadurch wird die Knoten-ID hinzugefügt,window.Drupal.settings.nid
die Sie nach Belieben in JavaScript verwenden können.Wie in den Kommentaren vorgeschlagen, ist hier der Code zum Hinzufügen der Knoten-ID von
template.php
:quelle
template_preprocess_page
(wenn Sie sie auf Seitenebene benötigen). Um die Dinge nicht zu verwechseln und die Vorlagen so sauber und lesbar wie möglich zu halten. Vorlagen sollten für das Markup verwendet werden.settings
undsetting
?