Node-ID per javascript abfragen?
Eingetragen von Michael77 (3)
am 28.05.2014 - 09:19 Uhr in
am 28.05.2014 - 09:19 Uhr in
Hallo zusammen,
folgende, etwas spezielle Frage bezüglich javascript + Drupal 7
Wie kann die Node-ID der gerade aktiven Seite in Javascript (clientseitig) abgefragt werden?
In verschiedenen Quellen bin ich auf diese Lösung gestossen, funktioniert aber nicht.
var getDrupalNodeIDlocator = function() {
if (arg(0) == 'node' && is_nummeric(arg(1))){
$nid = arg(1);
if ($nid) {
alert('zeige node id' + $nid);
}
}
arg ist nicht bekannt.
Vermutlich muss vor das arg noch was Drupal spezifisches voranggestellt werden.
In welcher Bibliotheken Klasse von Drupal befindet sich das "arg"?
Über Tipps und Hinweise würde ich mich freuen,
danke und Grüße
Michael
- Anmelden oder Registrieren um Kommentare zu schreiben
Hallo,zusätzliche Abfragen
am 28.05.2014 - 09:45 Uhr
Hallo,
zusätzliche Abfragen kannst Du hier vermeiden, hängt ein bisschen von Deinem Theme ab.
Standardmäßig wir die node id im body tag ausgegeben, per JQuery-Selektor kannst sie hier ermitteln und verwenden, Die Übergabe von php an js hast Du damit auch von der Backe...
Gruß
Christian
Ist arg() nicht eine
am 28.05.2014 - 18:25 Uhr
Ist
arg()
nicht eine PHP-Funktion von Drupal? Oder soll es die auch in einem JavaScript von Drupal geben?Also wenn solche Daten aus der "PHP-Welt" in JavaScript benötigt werden, nutze ich gerne Drupal.settings, das JavaScript-Objekt von Drupal... kann sein, dass das nicht so richtig gut, aber als Autodidakt erschien mir dieser Weg am besten.
In deinem Fall für ich zunächst
hook_node_view()
in einem eigenen Modul nutzen:function MODULE_node_view($node, $view_mode, $langcode) {
$info = array();
$info['nodeID'] = $node->nid;
drupal_add_js(array('MODULE' => $info), array('type' => 'setting'));
}
Das ginge auch in der template.php Deines Templates:
function THEME_preprocess_node(&$variables) {
$info = array();
$info['nodeID'] = $variables['node']->nid;
drupal_add_js(array('THEME' => $info), array('type' => 'setting'));
}
Damit sollte die Node in dem Drupal.settings Objekt im Head der Seite stehen. In Deinem JavaScript kannst Du das dann so abrufen:
var nid = Drupal.settings['MODULE']['nodeID'];
bzw. eben
var nid = Drupal.settings['THEME']['nodeID'];
Das ist jetzt nur so zusammengeschrieben aus meinen Lösungen, wo das geklappt hat, vielleicht hilft Dir das ja.
Hallo, mal eine kurze Frage.
am 18.03.2016 - 23:25 Uhr
Hallo,
mal eine kurze Frage. Wie sieht der Code denn dann in Drupal 8 aus?
Danke