it-swarm-es.com

¿Cómo puedo proporcionar un filtro con contexto / NID de invocación de nodos?

Actualmente estoy trabajando en un módulo personalizado que tiene un filtro que requiere el objeto de nodo para la salida.

Originalmente, el filtro simplemente estaba tirando de la NID de ARG (1) y usando eso para cargar en el objeto del nodo, pero desafortunadamente si el caché de filtro se enjuaga y los nodos reconstruyen su salida desde cualquier lugar que no sea la página del nodo arg (1) No contendrá el NID y, por lo tanto, el filtro se romperá.

Estoy considerando poner la NID en el token que el filtro se convierte, pero obviamente, la NID no se conoce durante la creación de un nodo. No sería demasiado difícil alterar el token a través de hook_nodeapi() para insertar la NID, pero parece que parece mucho.

¿Existe una forma más sencilla de proporcionar un filtro con algún tipo de contexto para que pueda ser consciente de qué nodo lo invocó?

2
Decipher

Los filtros no son conscientes del contexto y AFAIK, no hay manera en el momento de hacer lo que quiere. Esto ha sido A Solicitud de característica desde 2008, pero la propuesta Parche no lo convirtió en Drupal 7.

Si esto es muy importante para el sitio que está construyendo, puede considerar el parche Drupal Core. Sin embargo, una vez Drupal Core está parcheado, deberá Tenga cuidado adicional (y hora) al actualizar su sitio.

3
marcvangend

Los módulos de filtro también se invocan para comentarios, pero ninguno de los argumentos aprobados al filtro le permite comprender cuando se invoca para alterar un contenido de nodo o un comentario.

Puede implementar hook_nodeapi() para cambiar el contenido de un nodo cuando se está montando antes de la representación; Compruebe el valor de $op es "view".
Esto es en realidad lo que un módulo de terceros que altera el contenido de un basado en un nodo en el contenido de algunos campos de nodo lo hace.

Si la cadena se reemplaza, los usuarios que editan el nodo (y los usuarios deben saber esta posibilidad), también debe modificar, por ejemplo, la descripción dada para el campo del cuerpo del nodo en el formulario de edición para Incluya una descripción de los "tokens", el módulo está reemplazando.

0
kiamlaluno