Tworzę niestandardowy typ zawartości. Domyślnie węzły obsługują tylko dwa tryby widoku ( full
i 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;
}
Chcę dodać inne tryby widoku dla tego typu węzła, takie jak:
small_box
small_box_with_user_pic
big_box
i chcesz renderować węzeł za pomocą takiego kodu:
$node = node_load($my_nid);
$output = drupal_render(node_view($node, 'big_box'));
Jakieś sugestie?
Odpowiedzi:
najpierw musimy dodać dodatkowe tryby widoku z hook_entity_info_alter
// możemy dołączyć dodatkowe funkcje motywu lub szablony i dodać zmienne za pomocą hook_view
// w naszym temacie haka
źródło
Jeśli wszystko, czego potrzebujesz, to niestandardowe tryby widoku, a następnie Tryb widoku encji może pomóc. Display Suite ułatwia także tworzenie niestandardowych trybów widoku, tworzenie nowych pseudopól oraz przyjemny interfejs przeciągania i upuszczania do układania różnych elementów w różnych trybach widoku.
Jeśli chcesz to wszystko zrobić w kodzie, to encja_przykład z modułu Przykłady ma tryb widoku IIRC. Drupal Commerce ma również wiele niestandardowych elementów z niestandardowymi trybami widoku.
źródło
Jeśli korzystasz z Display Suite, upewnij się, że moduł ds_ui jest włączony i przejdź do admin / structure / ds / view_modes, aby uzyskać listę istniejących i utworzyć nowe tryby widoku.
źródło
Wiem, że to starszy temat, ale znalazłem następującą metodę, która działa dobrze w większości przypadków użycia.
Te proste kroki poprowadzą Cię przez proces tworzenia własnego modułu w nowym trybie widoku. To dość proste. Chciałbym podać atrybucję, ale nie pamiętam, gdzie znalazłem podstawę do tego. Zachowuje jednak tę samą logikę, co odpowiedź werqiousa.
Plik 1: my_module_view_modes.module
Plik 2: my_module_view_modes.info
Zapisz te dwa pliki w folderze my_module_view_mode w folderze modułów i włącz. Wyczyść pamięć podręczną, a teraz zobaczysz nowe tryby widoku w odpowiednich jednostkach.
źródło