Existe uma maneira definitiva e universal de fazer isso? Por exemplo, usando alguma variável de ambiente que acompanha Drupal.behaviours
?
Eu fiz algumas pesquisas e parece não haver uma resposta comum.
7
nodes
javascript
therobyouknow
fonte
fonte
drupal_add_js()
; o nid não é sempre utilizada no lado do cliente por núcleo por isso não há necessidade para que possa ser adicionado como uma definição geralmenteRespostas:
Como mencionado acima, o núcleo do Drupal não usa o ID do nó no lado do cliente, para que ele não seja transmitido. se você quiser acessar, precisará adicioná-lo manualmente:
Em seguida, no lado do cliente, você terá acesso a ele através de
Drupal.settings
:fonte
class
atributo do tema de inicialização. Por fim, estamos buscando uma solução independente de tema.$setting = array('MYMODULE' => array('currentNid' => $node->nid));
o=
é estranho. Isso fez o trabalho - inseriu seu código nessa função que já existiapop_links
e adicionou seu javascriptpop_links.js
.Conforme mencionado pelo MPD em sua resposta, trabalhar com as classes css padrão que o Drupal gera para o elemento é uma solução fácil que funciona sem o código PHP personalizado.
Aqui está a nossa implementação:
fonte
var $body = $('body.path-node');
(testado com zurb_foundation para 8.x-6.x)O padrão
template_preprocess_html()
tem esse bit de código emIsso permanecerá nas classes na
<body>
linha do elementopage-node-123
. Se você não quiser usar seu próprio código em um módulo personalizado, poderá obter as classes via jQuery , encontrar o que correspondepage-node-
e analisar o nid.fonte
O que funcionou para mim foi adicionar a seguinte linha ao meu
page.tpl.php
modelo. Isso inclui o ID do nó nowindow.Drupal.settings.nid
qual você pode usar à vontade em JavaScript.Conforme sugerido nos comentários, aqui está o código para adicionar o ID do nó de
template.php
:fonte
template_preprocess_page
(se você precisar no nível da página). Para não confundir as coisas e manter os modelos o mais limpos e legíveis possível. Modelos devem ser usados para marcação.settings
esetting
?