J'utilise Page Manager et Panels , fournissant des panneaux de nœuds personnalisés avec des règles de sélection par type (par exemple, une variante de panneau pour l'article, une variante de panneau pour le type de contenu de blog). Cela fonctionne bien jusqu'à présent, le style est également soigné. Mais, comment puis-je obtenir plus de pouvoir sur le rendu des éléments?
Il existe plusieurs façons de rendre des éléments spécifiques: en ajoutant des champs, en utilisant un jeton, en utilisant une vue personnalisée uniquement en rendant des champs spécifiques, en utilisant une entité de noeud rendue avec le mode d'affichage. en utilisant un contenu de panneau personnalisé avec des espaces réservés, etc.
Quelle est la meilleure approche ici? Ce serait formidable d'avoir la possibilité d'ajouter un élément de volet personnalisé (quelque chose) qui peut être stylisé dans un * .tpl.php.
Mon approche actuelle consisterait à utiliser la suite d'affichage, à créer des modes d'affichage pour différentes parties / régions de panneau et à utiliser des suggestions de crochets de thème pour ajouter un node.tpl.php personnalisé pour chaque mode d'affichage. Il n'aurait pas besoin d'invoquer des vues, ce qui est à peu près exagéré?! rendu, requêtes supplémentaires ...) et peut utiliser des entités déjà mises en 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';
}
}
Je ne sais pas dans quelle mesure cela sera mis en cache et combien de ressources cela consommera. Tout conseil serait reconnaissant.