¿Es posible crear su propio gancho en un módulo Drupal para que otros módulos de Drupal consuman? De lo contrario, ¿existe un mecanismo en Drupal para que los desarrolladores de terceros proporcionen anzuelos? Si todo ha sido un no hasta ahora, ¿dónde está la lista de ganchos implementada?¿Puedes crear tu propio gancho en Drupal?
Según entiendo las cosas, los módulos de Drupal funcionan en un evento como el sistema llamado hooks. Cuando crea un nuevo módulo, crea funciones que implementan un gancho. Por ejemplo, hay un gancho hook_delete
. Si implementa una función en su módulo
function mymodule_delete($node)
{
}
se llamará a esta función cada vez que se elimine un nodo.
Lo que quiero saber es, ¿hay alguna manera o yo, como desarrollador de un módulo de terceros, para crear mis propios ganchos. Digamos, algo así como hook_alanskickbutthook
para que otros desarrolladores de módulos puedan suscribirse a este enlace.
Si esto es posible, ¿cómo lo hace? He revisado los documentos oficiales y no he encontrado mucho allí, y todavía me mareo un poco cuando empiezo a hurgar en el código fuente de Drupal (entiendo la recursión, pero no dedico suficiente tiempo a pensar en problemas recursivos). Las soluciones completas son bienvenidas, pero estoy contento de que me apunten en la dirección correcta.
En el tutorial que publicaste, ¿qué se llama la función "taxonomy_rockstar_generate_layouts"? (disculpas por la pregunta estilo novato. Soy lo suficientemente nuevo para Druapl que no puedo decir dónde pertenecen las cosas en el sistema). –
editado arriba para mostrar cómo llamar a dicho gancho recién creado :) – jpstrikesback
Algunas correcciones/tipps: a) $ args no es por referencia cuando se usa module_invoke_all(). b) Si desea pasar algo por referencia, use drupal_alter() (fuerza el sufijo _alter en el nombre del gancho) o module_implements + a loop y luego llame a las implementaciones directamente. c) La forma recomendada para documentar los ganchos está en un archivo yourmodule.api.php, vea el núcleo para ver ejemplos. d) Un patrón común en D7 al recopilar información si se usa un sufijo de información y también se llama a drupal_alter sobre eso. Ejemplo Php $ stuff = module_invoke_all ('yourmodule_stuff_info'); drupal_alter ('yourmodule_stuff_info', $ cosas); ?>. – Berdir