Estoy usando Page Manager y Panels , proporcionando paneles de nodo personalizados con reglas de selección por tipo (por ejemplo, una variante de panel para artículo, una variante de panel para tipo de contenido de blog). Esto funciona sin problemas hasta ahora, el estilo también es ordenado. Pero, ¿cómo puedo obtener más poder sobre la representación de elementos?
Hay varias formas de representar elementos específicos: agregar campos, usar token, usar una vista personalizada solo representar campos específicos, usar entidad de nodo renderizada con modo de vista. utilizando contenido de panel personalizado con marcadores de posición, etc.
¿Cuál es el mejor enfoque aquí? Sería genial tener la capacidad de agregar un elemento de panel personalizado (algo) que se pueda diseñar en un * .tpl.php.
Mi enfoque actual sería usar el conjunto de pantallas, crear modos de vista para diferentes partes / regiones de panel y usar sugerencias de enlace de tema para agregar node.tpl.php personalizado para cada modo de vista. ¡No necesitaría invocar vistas, lo cual es una exageración! renderizado, consultas adicionales ...) y puede usar entidades ya almacenadas en caché.
function mytheme_preprocess_node(&$vars) {
if ($vars['node']->type == 'my_content_type' && $vars['view_mode'] == 'panel_region_left') {
$vars['theme_hook_suggestions'][] = 'node__my_content_type__panel_region_left';
}
if ($vars['node']->type == 'my_content_type' && $vars['view_mode'] == 'panel_region_right') {
$vars['theme_hook_suggestions'][] = 'node__my_content_type__panel_region_right';
}
}
No estoy seguro de qué tan bien se almacenará en caché y cuántos recursos consumirá. Cualquier consejo sería agradecido.
fuente
La manera mejor y más fácil de agregar contenido personalizado a los paneles y crear temas a su manera es crear paneles de contenido personalizados, agregar su código utilizando el modo de filtro como filtro php y encapsular su contenido php / html personalizado en etiquetas div personalizadas.
Ahora, para crear un tema en este panel de contenido personalizado, todo lo que tiene que hacer es agregar sus reglas css personalizadas para esta etiqueta div en su local.css
Si tiene algún requisito específico, indíquelo aquí.
fuente