Je crée un type de contenu personnalisé. Par défaut, les nœuds ne prennent en charge que deux modes d'affichage ( full
et teaser
):
function mymodule_view($node, $view_mode)
{
if ($view_mode == 'full') {
$node->content['#theme']= 'my_full_node_view_theme';
}
if ($view_mode == 'teaser') {
$node->content['#theme']= 'my_teaser_node_view_theme';
}
return $node;
}
Je veux ajouter d'autres modes d'affichage pour ce type de nœud, comme:
small_box
small_box_with_user_pic
big_box
et souhaitez rendre le nœud avec du code comme celui-ci:
$node = node_load($my_nid);
$output = drupal_render(node_view($node, 'big_box'));
Aucune suggestion?
Réponses:
nous devons d'abord ajouter des modes d'affichage supplémentaires avec hook_entity_info_alter
// nous pouvons attacher des fonctions de thème ou des modèles supplémentaires et ajouter des variables avec hook_view
// dans notre thème crochet
la source
Si tout ce que vous voulez, ce sont des modes d'affichage personnalisés, le mode d'affichage d' entité peut vous aider. Display Suite facilite également la création de modes d'affichage personnalisés, la création de nouveaux pseudo-champs et une interface glisser-déposer agréable pour disposer différents éléments dans les différents modes d'affichage.
Si vous voulez tout faire en code, alors entity_example du module Exemples a un mode d'affichage IIRC. Drupal Commerce possède également un certain nombre d'entités personnalisées avec des modes d'affichage personnalisés.
la source
Si vous utilisez Display Suite, assurez-vous que le module ds_ui est activé et accédez à admin / structure / ds / view_modes pour obtenir une liste des modes d'affichage existants et créer de nouveaux.
la source
Je sais que c'est un sujet plus ancien, mais j'ai trouvé que la méthode suivante fonctionnait très bien pour la plupart des cas d'utilisation.
Ces étapes simples vous permettront de créer votre propre module avec le nouveau mode d'affichage. C'est assez simple. J'aimerais fournir une attribution, mais je ne me souviens pas où j'ai trouvé la base de cela. Cela suit la même logique que la réponse de werqious.
Fichier 1: my_module_view_modes.module
Fichier 2: my_module_view_modes.info
Enregistrez ces deux fichiers dans votre dossier my_module_view_mode dans votre dossier modules et activez. Videz votre cache et vous verrez maintenant les nouveaux modes d'affichage dans leurs entités respectives.
la source