Moja sytuacja jest następująca: mam seminarium typu treści z polami A, B i C. Mam regiony Nagłówek, stopka, treść i pasek boczny po lewej stronie. W Seminarium chcę wyświetlać pewne pola w obszarze zawartości, ale także w lewym obszarze paska bocznego.
Jak mam to zrobić? Przepraszam, jeśli na to już wcześniej odpowiedziano. Jestem programistą i nie waham się zagłębiać w funkcje przechwytujące i preprocesora. Mam zainstalowany moduł Widoki, ale nigdy go nie użyłem (to moja pierwsza strona Drupala, jeśli nie możesz powiedzieć: P).
Twoje zdrowie.
EDYCJA: To jest dla Drupal 7 .
Odpowiedzi:
Nie ma łatwego, gotowego do użycia sposobu dodania zawartości węzła do różnych regionów na stronie. Istnieje wiele sposobów rozwiązania tego problemu.
Sposób niekodowania: Widoki i bloki
Utwórz widok
(plus dowolne dodatkowe ustawienia)
Następnie przejdź do strony bloku administratora Przenieś nowo utworzony blok widoku do regionu, w którym chcesz go wyświetlić. Powinien być wyświetlany tylko na stronach węzłów seminarium.
Powtórz dla wszystkich regionów
Sposób kodowania za pomocą theme_preprocess_region ():
kod wyglądałby mniej więcej tak
Dotyczy to tylko Drupala 7. Teraz jest dostępny w twoim regionie.tpl.php.
źródło
Moduł Display Suite pozwala to zrobić. Musisz włączyć moduł Display Suite Extras, aby wyświetlać regiony tematyczne jako cele dla komponentów węzłów. Informacje na temat tego, jak to zrobić, można znaleźć w polach Dodaj do strony blokowej dokumentacji Display Suite
źródło
Miałem ten sam problem. Rozwiązanie jest dość łatwe. Możesz oprzeć fakt, że w Drupal 7 możemy zdefiniować własny tryb view_mode, nie tylko FULL i TEASER (jak wiemy z najstarszych wersji). Zdefiniuj więc inny tryb widoku do użycia w swoim regionie: np. LEFTHAND. Drupal wyświetla PEŁNY tryb wyświetlania w obszarze zawartości. Musisz więc powiedzieć Drupalowi, aby wyświetlił LEFTHAND w lewym obszarze paska bocznego.
W template_preprocess_page ()
W node.tpl.php dodaj nowy ekran dla trybu widoku z lewej strony
źródło
if (array_key_exists('block_14',$vars['page']['main_content'])){}
pojawiał się tylko na stronach z określonym blokiem.Jeśli pakiet Display Suite wydaje się zbyt duży dla twoich potrzeb (jest to świetny moduł, ale może być przesada, jeśli potrzebujesz tylko przenieść kilka pól), istnieje moduł tylko do tego celu -> Bloki CCK .
Wiem, że nazywa się to blokami „CCK”, ale działa z Drupalem 7 (który wprowadził funkcjonalność CCK do rdzenia).
źródło
Nieznaczna zmiana w odpowiedzi @Patrik Lucan,
if ($vars['node'])
powodowała problemy na stronach, które nie były węzłami, np. Niestandardowa strona główna z blokiem lub widokiem.Zmienić na:
if (array_key_exists('node', $vars))
Co wydaje się rozwiązać problem.
źródło
Tymczasem jest na to moduł. Ze strony modułu:
źródło