Есть ли определенный, универсальный способ сделать это? Например, используя некоторую переменную окружения, которая идет с Drupal.behaviours
?
Я провел некоторое исследование, и, похоже, нет общего ответа.
7
nodes
javascript
therobyouknow
источник
источник
drupal_add_js()
; nid никогда не используется на стороне клиента ядром, поэтому нет необходимости добавлять его в качестве параметра обычноОтветы:
Как уже упоминалось выше, ядро Drupal не использует идентификатор узла на стороне клиента, поэтому оно не проходит через него. если вы хотите получить к нему доступ, вам нужно добавить его вручную:
Тогда на стороне клиента вы получите доступ к нему через
Drupal.settings
:источник
class
атрибуте из темы начальной загрузки. В конечном итоге мы стремимся к решению, не зависящему от темы.$setting = array('MYMODULE' => array('currentNid' => $node->nid));
=
pop_links
pop_links.js
Как упомянул MPD в своем ответе, работа с css-классами по умолчанию, сгенерированными Drupal для элемента, является простым решением, которое работает без специального PHP-кода.
Вот наша реализация:
источник
var $body = $('body.path-node');
(протестировано с zurb_foundation для 8.x-6.x)По умолчанию
template_preprocess_html()
этот бит кода вЭто будет привязывать классы к
<body>
строке элементаpage-node-123
. Если вы не хотите использовать свой собственный код в пользовательском модуле, вы можете получить классы через jQuery , найти тот, который соответствуетpage-node-
, и затем проанализировать nid.источник
Для меня сработало добавление следующей строки в мой
page.tpl.php
шаблон. Это добавляет идентификатор узла,window.Drupal.settings.nid
который вы можете использовать по желанию в JavaScript.Как предлагается в комментариях, вот код для добавления идентификатора узла из
template.php
:источник
template_preprocess_page
вместо (если вам нужно на уровне страницы). Чтобы не путать вещи и держать шаблоны как можно более чистыми и читаемыми. Шаблоны должны быть использованы для разметки.settings
иsetting
?