¿Existe una forma definitiva y universal de hacer esto? Por ejemplo, ¿usando alguna variable de entorno que viene con Drupal.behaviours
?
He investigado un poco y parece que no hay una respuesta común.
7
nodes
javascript
therobyouknow
fuente
fuente
drupal_add_js()
; el nid nunca se usa en el lado del cliente por núcleo, por lo que no es necesario que se agregue como una configuración generalmenteRespuestas:
Como se mencionó anteriormente, el núcleo de Drupal no tiene uso para el ID del nodo en el lado del cliente, por lo que no lo pasa. si desea acceder a él, deberá agregarlo manualmente:
Luego, en el lado del cliente, tendrá acceso a él a través de
Drupal.settings
:fuente
class
atributo del tema bootstrap. En última instancia, apuntamos a una solución independiente del tema.$setting = array('MYMODULE' => array('currentNid' => $node->nid));
el=
es extraño. Eso hizo el trabajo: agregó su código a esta función que ya existíapop_links
y agregó su JavaScriptpop_links.js
.Como mencionó MPD en su respuesta, trabajar con las clases css predeterminadas que Drupal genera para el elemento es una solución fácil que funciona sin código PHP personalizado.
Aquí está nuestra implementación:
fuente
var $body = $('body.path-node');
(probado con zurb_foundation para 8.x-6.x)El valor predeterminado
template_preprocess_html()
tiene este bit de código enEsto se mantendrá en las clases a la
<body>
línea del elementopage-node-123
. Si no desea usar su propio código en un módulo personalizado, puede obtener las clases a través de jQuery , encontrar el que coincidapage-node-
y luego analizar el nid.fuente
Lo que me ha funcionado es agregar la siguiente línea a mi
page.tpl.php
plantilla. Esto agrega la ID de nodo a lawindow.Drupal.settings.nid
que puede usar a voluntad en JavaScript.Como se sugiere en los comentarios, aquí está el código para agregar la ID de nodo de
template.php
:fuente
template_preprocess_page
lugar (si la necesita en el nivel de la página). Para no mezclar las cosas y mantener las plantillas tan limpias y legibles como sea posible. Las plantillas deben usarse para el marcado.settings
ysetting
?