Załóżmy, że masz następujące strony w drzewie menu:
- Projektowanie
- Projekt pierwszy
- Projekt drugi
- Projekt trzeci
Szukam sposobu, aby utworzyć widok, który zostanie osadzony na stronie projektu (nadrzędny), który pokaże zdjęcie, tytuł i tekst (streszczenie) ze stron podrzędnych.
Relacje między rodzicem a dziećmi są zdefiniowane w drzewie menu.
Wiem, że mogę używać odwołania do węzła, ale to oznaczałoby, że za każdym razem, gdy ktoś tworzy stronę, musiałby zdefiniować relację menu, a następnie relację odwołania do węzła.
Wiem też, że mogłem stworzyć inny typ zawartości, ale myślę, że to przesada, ponieważ wszystkie strony zawartości wyglądają tak samo.
Odpowiedzi:
Jednym z rozwiązań jest użycie terminów taksonomicznych do zdefiniowania relacji, a następnie użycie modułu Menu taksonomii do przetłumaczenia tych relacji terminów na pozycje menu. Następnie możesz użyć niestandardowego modułu strony i modułów kontekstu, aby kontrolować informacje i regiony na wszystkich stronach, jeśli nie chcesz używać paneli.
źródło
Możesz to zrobić dokładnie za pomocą interfejsu API węzła menu i modułów widoków węzła menu .
Utwórz widok z wymaganym typem zawartości i wybierz filtr kontekstowy „Menu: ID linku do menu” (jest to dostępne tylko przy zainstalowanych powyższych modułach).
W obszarze „Gdy wartość filtru nie jest dostępna” wybierz „Podaj wartość domyślną” i wybierz „Kod PHP”.
Następujący fragment kodu zrobi to, po prostu odsłonisz blok z widoku i już tam jesteś:
źródło
menu_load_object(arg(1))
zamiastnode_load()
zaoszczędzić trochę pieniędzy. 2) Należy sprawdzić, aby upewnić się, że element menu pochodzi z menu, którego dotyczy. W tej chwili właśnie zwracasz pierwszy$mlid
. Wewnątrz foreach należy dodać warunek,if ($data->menu_name == 'my-menu')
aby to naprawić. oraz 3) Możesz dodać drugi filtr,menu: hidden
aby zwracać tylko elementy, które nie są ukryte. Użyj tego samego fragmentu kodu, ale zwróć$data->hidden;
zamiast$mlid
.Moduł Node Hierarchy pozwala na ten rodzaj relacji, a także zapewnia integrację widoków.
źródło
Być może zmieniło się to w D7 / Views 3, ale nie potrzebujesz żadnego PHP, aby osiągnąć pożądane zachowanie:
voila. To nie powinno działać , ale działa.
Działa dobrze tylko z węzłami, ale zaletą korzystania z łączy menu nad hierarchią węzłów jest to, że nie ogranicza się do budowania nawigacji wokół węzłów. Możesz nawet dołączyć do swojego widoku linki zewnętrzne.
źródło
Jest stosunkowo nowy moduł Widoki Menu Węzeł Filtr podrzędny, który wydaje się robić dokładnie to, co chcesz:
źródło
Czy rozważałeś użycie Node Reference w tym celu?
W ten sposób możesz osiągnąć podobny wynik, jakiego prawdopodobnie szukasz.
źródło
Odpowiedź Emile'a jest słuszna, ale musiałem wkleić wspomniany kod PHP w filtrze kontekstowym typu „ Menu: identyfikator linku do menu nadrzędnego ”.
źródło
Jeśli używasz tłumaczenia encji, a węzeł jest dołączony do różnych menu, tutaj jest adaptacja kodu filtrującego na bieżący język. Musisz skopiować to jako kod PHP dla filtru kontekstowego (identyfikator linku do menu nadrzędnego) w swoim widoku, jak wyjaśniono w innych odpowiedziach
źródło
Z kolejki problemów z widokami węzłów menu mamy to fajne rozwiązanie:
wprowadź następujący kod
źródło