it-swarm.com.de

Ändern Sie Vorlagen basierend auf dem Pfadalias

Was ist der einfachste Weg, eine Vorlage basierend auf dem Pfadalias auszuwählen? Zum Beispiel, wenn ich die folgenden URLs habe:

http://www.example.com/mydirectory/page1
http://www.example.com/mydirectory/page2
http://www.example.com/mydirectory/page

Wie würde ich vorgehen, um eine Vorlage für alle Seiten in mydirectory zu erstellen? Ich sollte auch hinzufügen, dass die Verwendung des Inhaltstyps zum Thema dieser Seiten keine Option ist.

6
Jane

Sie können einer hook_preprocess_page() - Implementierung eine Logik hinzufügen, die den Alias ​​überprüft und Vorschläge für Themen-Hooks hinzufügt, wenn der Pfad übereinstimmt, z.

function MYTHEME_preprocess_page(&$vars) {
  $alias_parts = explode('/', drupal_get_path_alias());

  if (count($alias_parts) && $alias_parts[0] == 'mydirectory') {
    $vars['theme_hook_suggestions'][] = 'page__mycustomtemplate';
  }
}

Wenn Sie dann ein page--mycustomtemplate.tpl.php Datei in Ihrem Thema, und leeren Sie den Cache, alle Seiten mit einem Alias ​​beginnen mydirectory/ verwendet diese neue Datei anstelle der Standarddatei page.tpl.php.

21
Clive

Es ist tatsächlich einfacher als das mit drupal_match_path () . So ermittelt das Blockmodul, ob ein Block auf einer Seite angezeigt werden soll oder nicht:

function MYTHEME_preprocess_page(&$vars) {
  if (drupal_match_path(drupal_get_path_alias(), 'mydirectory/*')) {
    $vars['theme_hook_suggestions'][] = 'page__mycustomtemplate';
  }
}
4
Colin Shipton