Jak utworzyć niestandardowe regiony w motywie?

58

Chcę dodać nowy obszar, który będzie obejmował całą witrynę. Opisz proces wprowadzania tego nowego regionu do mojego motywu, jeśli to możliwe, uogólnij go, dodając nowy, niestandardowy region.

palbakulich
źródło
blog szczegółowy: goo.gl/kD3TZu
Suresh Kamrushi

Odpowiedzi:

68

Regiony określasz w pliku .info kompozycji. Zobacz: Struktura pliku .info

Następnie musisz umieścić odpowiednie tagi szablonu w pliku page.tpl.php.

Na przykład, jeśli zdefiniowałeś region sidebarw pliku .info motywów, wówczas <?php print render($page['sidebar']); ?>dodałbyś : w odpowiednim miejscu w page.tpl.php.

Camsoft
źródło
6
Jeśli Twój motyw nie ma pliku page.tpl.php, możesz skopiować domyślny moduł systemowy do swojego motywu i zmodyfikować tę kopię.
Mikey P
5
Omega nie potrzebuje części page.tpl.php, wystarczy zadeklarować region w .info ORAZ Wyczyść pamięć podręczną.
Capi Etheriel,
20

Jeszcze jedna uwaga: nie przegap wymaganych regionów!

regions[content] = Content
regions[help] = Help
regions[page_top] = Page top
regions[page_bottom] = Page bottom

Więcej na ten temat można znaleźć na stronie http://drupal.org/update/themes/6/7#closure .

Aby wyjaśnić tę kwestię: jeśli definiujesz własne regiony, musisz zdefiniować wszystko, czego używasz, w tym te, które są wymagane. Innymi słowy, nie możesz po prostu zdefiniować dodatkowych regionów: jeśli je zdefiniujesz, musisz zdefiniować je wszystkie.

Laura
źródło
9

Tworzenie regionu dla motywu Drupal 7 nie różni się od tworzenia regionu dla regionu Drupal 6; różnice między Drupalem 7 a poprzednimi wersjami są zasadniczo:

  • Regiony nie są zdefiniowane za pomocą mytheme_regions()funkcji, jak to zrobiono w Drupal 5, ale są zdefiniowane w mytheme.info za pomocą regions[]dyrektyw, podobnie jak w przypadku motywów Drupal 6.
  • Regiony są renderowane przy użyciu funkcji Drupal render(), zamiast drukowania zawartości zmiennej.

Domyślne regiony Drupal 7 to:

regions[header] = Header
regions[highlighted] = Highlighted
regions[help] = Help
regions[content] = Content
regions[sidebar_first] = Left sidebar
regions[sidebar_second] = Right sidebar
regions[footer] = Footer

Główne tematy Drupala 7 obejmują teraz region o nazwie „podświetlony”, który używa tego samego wyświetlacza co obszar deklaracji misji w Drupal 6; zawierają również region o nazwie „pomoc”, który domyślnie ma tę samą zawartość $helpzmiennej, z której korzysta Drupal 6.

kiamlaluno
źródło
4

Regiony kompozycji są zdefiniowane w pliku .info kompozycji - patrz dokumentacja . Wystarczy dodać linię, regions[corner] = Corneraby uzyskać region Corner.

Następnie musisz edytować plik page.tpl.php i dodać miejsce, w <php print render($corner); ?>którym region ma się wyświetlać. Jeśli twój motyw nie ma page.tpl.php, skopiuj z motywu podstawowego lub z modułu systemowego.

Typowe pułapki:

  • Jeśli plik theme.info nie ma zadeklarowanych regionów, używa domyślnych regionów Drupal. Jeśli chcesz dodać, musisz ponownie zadeklarować regiony domyślne. Możesz oczywiście usunąć dowolny region, ale poprzyj wymagane regiony. Zobacz ponownie dokumenty .

  • Zmiany w pliku .info lub dodawanie nowych plików do kompozycji (np. Page.tpl.php) zostaną zauważone dopiero po wyczyszczeniu pamięci podręcznej.

  • Omega, bardzo popularny motyw podstawowy, nie potrzebuje żadnych zmian w page.tpl.php, tylko w pliku .info. Musisz jednak odwiedzić ustawienia motywu w interfejsie użytkownika i przypisać region do strefy.

Capi Etheriel
źródło
To jest podsumowanie odpowiedzi z typowymi pułapkami.
Capi Etheriel,
Czy regions[content] = Contentjedyny wymagany region w D7? drupal.org/node/171205#regions zdaje się sugerować, ale potem drupal.org/node/171224 mówi, że wymagane są regiony content, help, page_topipage_bottom
Jim Garrison
Nie wiem, czy Drupal sprawdza którykolwiek z regionów, ale contentjest to na pewno bardzo ważne. helpjest obsługiwany przez rdzeń (do wyprowadzania komunikatów pomocy), page_bottomprawdopodobnie jest tam, gdzie drukowane jest dolne js i page_topwydaje się być używane w paskach nawigacyjnych, takich jak podstawowe paski narzędzi.
Capi Etheriel
2

Wykonaj poniższe kroki, aby utworzyć niestandardowy region w swoim motywie:

  1. Przejdź do pliku theme.info i dodaj tę linię.

    regions[machine_name_of_your_region] = Name of your region
  2. Chociaż możesz także wywoływać bloki regionu również w szablonie węzła, zazwyczaj dodajesz region do szablonu strony motywu. Zwykle jest to page.tpl.php lub jeśli masz niestandardowe pliki szablonów dla różnych stron, edytuj je również. Nowy region pojawi się tylko na stronach zbudowanych wokół szablonu, do którego dodajesz nowy region. Wklej go tam, gdzie chcesz, aby pojawił się nowy region.

    <?php if ($page['machine_name_of_your_region']): ?>
      <div id="sidebar-first" class="column sidebar"><div class="section">
      <?php print render($page['machine_name_of_your_region']); ?>
      </div></div> <!-- /.section, /#sidebar-first -->
     <?php endif; ?>
    
  3. Konfiguracja - Wydajność - Wyczyść wszystkie pamięci podręczne

Astha Chauhan
źródło
0

Utwórz nowy region w motywie

Musisz tylko zdefiniować to w dwóch plikach.

  • Theme.info
  • Page.tpl.php

Theme.info

;;;;;;;;;;;;;;;;;;;;;
;; Regions
;;;;;;;;;;;;;;;;;;;;;

regions[navigation]      = 'Navigation'
regions[header]          = 'Top Bar'
regions[highlighted]     = 'Highlighted'
regions[new_region_name] = 'Region Name' ;; Add New Region

Page.tpl.php

Renderuj teraz ten region

  <?php if ($page['new_region']): ?>
      <div class="new_region_class">
        <?php print render($page['new_region']); ?>
     </div>
  <?php endif; ?>

Teraz Wyczyść całą pamięć podręczną, proszę bardzo, masz nowy region w swoim motywie. Możesz to zobaczyć na stronie konfiguracji bloku.

Więcej informacji na stronie http://drupal.org/node/171205

gsjha
źródło