Estou criando um tipo de conteúdo personalizado. Por padrão, os nós suportam apenas dois modos de exibição ( full
e 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;
}
Quero adicionar outros modos de exibição para este tipo de nó, como:
small_box
small_box_with_user_pic
big_box
e deseja renderizar o nó com código como este:
$node = node_load($my_nid);
$output = drupal_render(node_view($node, 'big_box'));
Alguma sugestão?
Respostas:
primeiro precisamos adicionar modos de exibição adicionais com hook_entity_info_alter
// podemos anexar funções ou modelos de tema adicionais e adicionar variáveis com hook_view
// no nosso tema de gancho
fonte
Se tudo o que você deseja são modos de exibição personalizados, o Modo de Exibição de Entidade pode ajudar. O Display Suite também facilita a criação de modos de exibição personalizados, a criação de novos pseudo-campos e a boa interface de arrastar e soltar para exibir diferentes elementos nos vários modos de exibição.
Se você quiser fazer isso tudo em código, o entity_example do módulo Examples tem um modo de visualização IIRC. O Drupal Commerce também possui várias entidades personalizadas com modos de visualização personalizados.
fonte
Se você estiver usando o Display Suite, verifique se o módulo ds_ui está ativado e vá para admin / structure / ds / view_modes para obter uma lista dos modos de exibição existentes e criar novos.
fonte
Sei que esse é um tópico mais antigo, mas achei o seguinte método para funcionar perfeitamente na maioria dos casos de uso.
Essas etapas simples o ajudarão a criar seu próprio módulo com o novo modo de visualização. É bem simples. Eu adoraria fornecer atribuição, mas não me lembro onde encontrei a base para isso. Ele segue a mesma lógica da resposta de werqious.
Arquivo 1: my_module_view_modes.module
Arquivo 2: my_module_view_modes.info
Salve esses dois arquivos na pasta my_module_view_mode na pasta modules e ative. Limpe seu cache e agora você verá os novos modos de exibição em suas respectivas entidades.
fonte