He creado un bloque usando hook_block_info
y hook_block_theme
y similares. Pero, ¿cómo puedo tema?
Lo tengo funcionando para devolver una matriz con las teclas 'subject'
y 'content'
. Pero creé el marcado directamente en el hook_block_view()
gancho y eso no es lo que quiero.
En los documentos se dice que el contenido debería devolverse preferiblemente como una matriz renderizable y no como un marcado. Pero, ¿qué es esta matriz renderizable ? Dicen que debería ser datos en lugar de marcado, pero todo lo que veo en los ejemplos es que solo se usa como envoltorio para el marcado, por lo que no se gana nada allí.
Quiero poder tener un block--MYMODULE--DELTA.tpl.php
tema en mi tema, pero ¿cómo lo llamo y cómo puedo pasar los datos al bloque?
Respuestas:
La forma en que hago esto es la siguiente ...
Y luego, en una subcarpeta en su módulo llamado
theme
, debería haber un archivo llamadomy-template.tpl.php
que podría tener esto en él:Y si quisieras, podrías sobrescribir la implementación del módulo "predeterminado" que acabas de crear
my-module.tpl.php
en tu tema como deseesblock--MYMODULE--DELTA.tpl.php
.fuente
admin/config/development/performance
y haga clic en elclear cache
botón. También puede borrar el caché usando drush, es decirdrush cc all
Prueba el módulo de desarrollador de temas . Cuando lo haya habilitado, puede marcar una casilla en la esquina inferior izquierda de su página de Drupal. Después de eso, puede hacer clic en su bloque y obtener información útil teniendo en cuenta el tema. Puede ver los posibles nombres de archivo .tpl.php para su bloque, por ejemplo.
Elige uno de esos nombres. El primero es el más específico. Solo tendrá un tema de bloque. Cree un archivo con ese nombre en su carpeta de temas si aún no está allí. Puede ponerlo en una subcarpeta si desea organizarse.
Copie el contenido de block.tpl.php en su archivo y comience a cambiar las cosas como desea.
Guarde su archivo, borre cachés y vuelva a cargar la página.
fuente
Ya hay varias respuestas para esta pregunta, pero he tratado de proporcionar un enfoque muy simplista. Con suerte, identificando a los desarrolladores la estructura de matriz esperada por Drupal al devolver el contenido de su bloque.
Para hacer esto, he dividido la pregunta en ejemplos de código separados como tales,
Vea una explicación completa aquí drupal 7 creando bloques personalizados de temas
fuente
Esta es una publicación antigua, pero he encontrado una mejor solución para anular plantillas de bloques de un módulo personalizado para Drupal 7.
Agregue esto a su módulo personalizado:
Entonces necesitas el siguiente código:
Todo lo que tienes que hacer es crear
templates/block--my-custom-module.tpl.php
dentro de la carpeta de tu módulo.He escrito un tutorial sobre este Tutorial de Drupal - Cómo anular plantillas de bloque de un módulo personalizado
fuente