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.
la source
Le moyen le plus simple et le plus simple d'ajouter du contenu personnalisé aux panneaux et de le thème à votre façon est de créer des volets de contenu personnalisé, d'ajouter votre code en utilisant le mode de filtre comme filtre php et d'encapsuler votre contenu php / html personnalisé dans des balises div personnalisées.
Maintenant, pour thème ce volet de contenu personnalisé, tout ce que vous avez à faire est d'ajouter vos règles css personnalisées pour cette balise div dans votre local.css
Si vous avez des exigences spécifiques, veuillez les indiquer ici.
la source