Wie erstelle ich benutzerdefinierte Regionen in einem Thema?

58

Ich möchte einen neuen Bereich hinzufügen, der Site-weit sein wird. Beschreiben Sie den Vorgang, mit dem diese neue Region in mein Thema aufgenommen wird, und verallgemeinern Sie ihn nach Möglichkeit, um eine neue benutzerdefinierte Region hinzuzufügen.

palbakulich
quelle
Detail-Blog: goo.gl/kD3TZu
Suresh Kamrushi

Antworten:

68

Sie definieren Regionen in Ihrer .info-Designdatei. Siehe: Struktur der .info-Datei

Anschließend müssen Sie die relevanten Template-Tags in Ihre page.tpl.php-Datei einfügen.

Wenn Sie beispielsweise die Region sidebarin Ihrer .info- <?php print render($page['sidebar']); ?>Themendatei definiert haben , würden Sie Folgendes hinzufügen: an der entsprechenden Stelle in Ihrer page.tpl.php.

Camsoft
quelle
6
Wenn Ihr Design keine page.tpl.php-Datei enthält, können Sie die Standarddatei aus dem Systemmodul in Ihr Design kopieren und diese Kopie ändern.
Mikey P
5
Omega benötigt den page.tpl.php-Teil nicht, deklarieren Sie einfach die Region in .info AND CLEAR CACHES.
Capi Etheriel
20

Ein weiterer Punkt: Verpassen Sie nicht die benötigten Regionen!

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

Mehr dazu finden Sie unter http://drupal.org/update/themes/6/7#closure .

Um dies zu verdeutlichen: Wenn Sie Ihre eigenen Regionen definieren, müssen Sie alles definieren, was Sie verwenden, einschließlich der erforderlichen. Mit anderen Worten, Sie können nicht einfach zusätzliche Regionen definieren: Wenn Sie eine definieren, müssen Sie alle definieren.

laura
quelle
9

Das Erstellen einer Region für ein Drupal 7-Thema unterscheidet sich nicht vom Erstellen einer Region für eine Drupal 6-Region. Die Unterschiede zwischen Drupal 7 und den Vorgängerversionen sind im Wesentlichen:

  • Die Regionen werden nicht mit einer mytheme_regions()Funktion wie in Drupal 5 definiert, sondern in mytheme.info mit regions[]Direktiven, was auch bei Drupal 6-Themen der Fall ist.
  • Die Regionen werden mit der Drupal-Funktion gerendert render(), anstatt den Inhalt einer Variablen zu drucken.

Die Standardregionen von Drupal 7 sind die folgenden:

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

Zu den Kernthemen von Drupal 7 gehört jetzt eine Region mit dem Namen "Hervorgehoben", die dieselbe Anzeige wie der Missionsbereich in Drupal 6 verwendet. Sie enthalten auch eine Region namens 'help', die standardmäßig den gleichen Inhalt wie die $helpvon Drupal 6 verwendete Variable hat.

kiamlaluno
quelle
4

Die Themenbereiche werden in der .info-Datei Ihres Themas definiert - siehe Dokumentation . Fügen Sie einfach eine Linie mit hinzu regions[corner] = Corner, um eine Eckregion zu erhalten.

Dann müssen Sie die Datei page.tpl.php bearbeiten und hinzufügen, <php print render($corner); ?>wo die Region angezeigt werden soll. Wenn Ihr Theme keine page.tpl.php hat, kopieren Sie vom Basis-Theme oder vom Systemmodul.

Häufige Fehler:

  • Wenn in der theme.info-Datei keine Regionen deklariert waren, wurden Drupal-Standardregionen verwendet. Wenn Sie hinzufügen möchten, müssen Sie die Standardregionen neu deklarieren. Sie können natürlich jede Region entfernen, aber bitte unterstützen Sie die erforderlichen Regionen. Sehen Sie sich die Dokumentation noch einmal an.

  • Änderungen an der .info-Datei oder das Hinzufügen neuer Dateien zum Design (wie page.tpl.php) werden erst nach dem Löschen der Caches bemerkt.

  • Omega, ein sehr beliebtes Basisthema, benötigt keine Änderungen in page.tpl.php, nur in der .info-Datei. Sie müssen jedoch die Designeinstellungen in der Benutzeroberfläche aufrufen und Ihre Region einer Zone zuweisen.

Capi Etheriel
quelle
Dies ist eine Zusammenfassung der Antworten mit häufigen Fallstricken.
Capi Etheriel
Ist regions[content] = Contentdie einzige erforderliche Region in D7? drupal.org/node/171205#regions scheint dies zu bedeuten, aber dann drupal.org/node/171224 sagt , dass die erforderlichen Regionen sind content, help, page_topundpage_bottom
Jim Garrison
Ich weiß nicht, ob Drupal nach einer der Regionen sucht, aber es contentist definitiv sehr wichtig. helpwird von core unterstützt (um page_bottomHilfemeldungen auszugeben), ist wahrscheinlich der Ort, an dem bottom js gedruckt wird und page_topscheint für Navigationsleisten wie die Kernsymbolleisten verwendet zu werden.
Capi Etheriel
2

Führen Sie die folgenden Schritte aus, um einen benutzerdefinierten Bereich in Ihrem Thema zu erstellen:

  1. Gehen Sie zu Ihrer theme.info-Datei und fügen Sie diese Zeile hinzu.

    regions[machine_name_of_your_region] = Name of your region
  2. Obwohl Sie auch Regionsblöcke in der Knotenvorlage aufrufen können, fügen Sie die Region im Allgemeinen der Seitenvorlage des Themas hinzu. Dies ist normalerweise page.tpl.php. Wenn Sie benutzerdefinierte Vorlagendateien für verschiedene Seiten haben, bearbeiten Sie auch diese. Die neue Region wird nur auf den Seiten angezeigt, die um die Vorlage erstellt wurden, der Sie die neue Region hinzufügen. Fügen Sie es an der Stelle ein, an der Ihre neue Region angezeigt werden soll.

    <?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. Konfiguration - Leistung - Löschen Sie alle Caches

Astha Chauhan
quelle
0

Erstellen Sie eine neue Region in Theme

Sie müssen es nur in zwei Dateien definieren.

  • Theme.info
  • Seite.tpl.php

Theme.info

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

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

Seite.tpl.php

Rendern Sie jetzt diese Region

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

Jetzt Cache leeren, los geht's, du hast eine neue Region in deinem Theme. Sie können es auf Ihrer Blockkonfigurationsseite sehen.

Weitere Informationen finden Sie unter http://drupal.org/node/171205

gsjha
quelle