Sto usando Page Manager e Panels , fornendo pannelli di nodi personalizzati con regole di selezione per tipo (ad esempio una variante di pannello per l'articolo, una variante di pannello per il tipo di contenuto del blog). Finora funziona perfettamente, anche lo stile è pulito. Ma come posso ottenere più potere sul rendering degli elementi?
Esistono diversi modi per eseguire il rendering di elementi specifici: aggiunta di campi, utilizzo di token, utilizzo di una vista personalizzata solo rendering di campi specifici, utilizzo dell'entità nodo renderizzata con modalità di visualizzazione. utilizzando il contenuto del pannello personalizzato con segnaposto, ecc.
Qual è l'approccio migliore qui? Sarebbe bello poter aggiungere un elemento del riquadro personalizzato (qualcosa) che può essere disegnato in un * .tpl.php.
Il mio approccio attuale sarebbe utilizzare la suite di visualizzazione, la creazione di modalità di visualizzazione per diverse parti / aree del pannello e l'utilizzo di suggerimenti di hook del tema per l'aggiunta di node.tpl.php personalizzato per ciascuna modalità di visualizzazione. Non avrebbe bisogno di invocare le opinioni, il che è praticamente eccessivo ?! rendering, query aggiuntive ...) e può utilizzare entità già memorizzate nella cache.
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';
}
}
Non sono sicuro di quanto bene verrà memorizzato nella cache e di quante risorse consumerà. Qualsiasi consiglio sarebbe grato.