Ändern Sie Vorlagen basierend auf dem Pfadalias

6

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/page3

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

Jane
quelle

Antworten:

21

Sie können einer hook_preprocess_page()Implementierung, die den Alias ​​überprüft , eine Logik hinzufügen und Vorschläge für Themen-Hooks hinzufügen, 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 eine page--mycustomtemplate.tpl.phpDatei in Ihrem Design erstellen und den Cache leeren, verwenden alle Seiten mit einem beginnenden Alias mydirectory/diese neue Datei anstelle des Standards page.tpl.php.

Clive
quelle
4

Mit drupal_match_path () ist es tatsächlich einfacher. 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';
  }
}
Colin Shipton
quelle