Estoy creando un tipo de contenido personalizado. Por defecto, los nodos solo admiten dos modos de visualización ( full
y 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;
}
Quiero agregar algunos otros modos de vista para este tipo de nodo, como:
small_box
small_box_with_user_pic
big_box
y quiere renderizar el nodo con un código como este:
$node = node_load($my_nid);
$output = drupal_render(node_view($node, 'big_box'));
¿Alguna sugerencia?
Respuestas:
primero tenemos que agregar modos de vista adicionales con hook_entity_info_alter
// podemos adjuntar funciones o plantillas de temas adicionales y agregar variables con hook_view
// en nuestro tema de gancho
fuente
Si todo lo que desea son modos de vista personalizados, entonces el Modo de vista de entidad puede ayudar. Display Suite también facilita la creación de modos de vista personalizados, la creación de nuevos pseudocampos y una buena interfaz de arrastrar y soltar para diseñar diferentes elementos en los distintos modos de vista.
Si desea hacer todo esto en código, entidad_ejemplo del módulo Ejemplos tiene un modo de vista IIRC. Drupal Commerce también tiene una serie de entidades personalizadas con modos de vista personalizados.
fuente
Si está utilizando Display Suite, asegúrese de que el módulo ds_ui esté habilitado y vaya a admin / structure / ds / view_modes para obtener una lista de los modos de vista existentes y crear nuevos.
fuente
Sé que este es un tema antiguo, pero he encontrado que el siguiente método funciona bien para la mayoría de los casos de uso.
Estos sencillos pasos lo llevarán a crear su propio módulo con el nuevo modo de vista. Es bastante simple. Me encantaría proporcionar atribución, pero no recuerdo dónde encontré la base para esto. Sin embargo, sigue la misma lógica que la respuesta de werqious.
Archivo 1: my_module_view_modes.module
Archivo 2: my_module_view_modes.info
Guarde estos dos archivos en su carpeta my_module_view_mode en su carpeta de módulos y habilítelos. Borre su caché y ahora verá los nuevos modos de vista en sus respectivas entidades.
fuente