No sé por qué, pero Views no agrega nombres de clase CSS "legibles para humanos" (como, por ejemplo, el nombre de la máquina de la vista) a los bloques que crea ( solo agrega sus clases a la parte del "contenido" generado cuando agregando clases a la parte de " clase CSS " en el editor de vistas (¡mira las capturas de pantalla a continuación!)).
Solo agrega las clases habituales block block-views
, y posiblemente contextual-links-region
CSS, a los bloques, y genera una identificación única (no clase) como esta: block-views-3d8f7966168beeec655c8ead69336789
(porque su delta es este código hash generado).
No tiene sentido escribir reglas CSS para estas clases e identificadores (como .block-views-3d8f7966168beeec655c8ead69336789 { /* ... */ }
), porque estas clases / identificadores pueden cambiar al modificar el bloque Vistas.
¿Cómo puedo agregar algunas clases CSS personalizadas en una implementación de hook_block_view_alter()
, si ni siquiera puedo identificar estos bloques debido a su hash delta generado?
No quiero usar Block Class , porque siento que es una exageración simplemente agregar algunas clases a uno o dos bloques generados por Vistas (por cierto, verifiqué el módulo, y siento que la SELECT css_class, module, delta FROM {block_class}
consulta es block_class_preprocess_block()
una exageración, porque verifica TODAS las clases agregadas, incluso si el bloque está oculto ...).
Entonces me gustaría resolverlo desde mi propio módulo.
EDITAR
Un ejemplo:
Mi vista con el nombre de la máquina y las clases CSS agregadas:
block--views--3d8f7966168beeec655c8ead69336789.tpl.php
archivo, y en este caso, estoy en el mismo punto que si usara unaif($variables['block']->delta == '3d8f7966168beeec655c8ead69336789')
condiciónhook_preprocess_block()
. Esto es lo que quería evitar, porque pensé que podía usar un nombre más legible en mi anzuelo. Por ejemplo, ¿qué sucede si quiero mover la vista a otra con los mismos parámetros, elimino el anterior, pero uso el mismo nombre de máquina y clases CSS, pero el hash único generado cambia? En este caso, pierdo mis modificaciones.Esa es una vieja pregunta, pero no hay una respuesta adecuada. Me encontré con el mismo problema. Las soluciones que se me ocurrieron fueron el selector padre CSS (que aún no existe) O alguna manipulación de Drupal.
Agregué un hook_preprocess_block para agregar una clase CSS de contenedor a todos los bloques de vista que definen una clase CSS. Eso no es trivial, así que pondré mi código aquí. Es posible que no funcione con todos los bloques de vista, si tiene un problema con este código, no dude en actualizarlo y publicar su propia versión.
Ejemplo: la vista con la clase CSS "test" estará contenida en un bloque con la clase CSS "test-wrapper".
fuente
Hay un módulo para este propósito.
Ver bloque de primera clase
fuente
Para mí
hook_preprocess_block()
no funcionó. (Tal vez porque tuve que agregar el bloque directamente desde un archivo de plantilla a través deviews_embed_view()
).Sin embargo,
hook_preprocess_views_view()
con una simple verificación de$vars['view']->current_display
sí funcionó:fuente
La forma más fácil para mí era duplicar el archivo block.tpl.php, cambiarle el nombre a
block--myregion.tpl.php
y luego agregar mis clases dentro de él.Ver: página de bloques temáticos .
fuente