パスエイリアスに基づいてテンプレートを変更する


6

パスエイリアスに基づいてテンプレートを選択する最も簡単な方法は何ですか。たとえば、次のURLがあるとします。

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

mydirectoryのすべてのページのテンプレートを作成するにはどうすればよいですか?また、コンテンツタイプを使用してこれらのページのテーマを設定することはオプションではないことも付け加えておきます。

回答:


21

hook_preprocess_page()エイリアスをチェックする実装にロジックを追加し、パスが一致する場合はテーマフックの提案を追加できます。

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';
  }
}

次にpage--mycustomtemplate.tpl.php、テーマでファイルを作成し、キャッシュをクリアすると、エイリアスが先頭にあるすべてのページmydirectory/で、標準のの代わりにその新しいファイルが使用されますpage.tpl.php


4

ブロックモジュールがページに表示されるかどうかにかかわらず、blocksモジュールが機能する方法であるdrupal_match_path()を使用するよりも実際には簡単です。

function MYTHEME_preprocess_page(&$vars) {
  if (drupal_match_path(drupal_get_path_alias(), 'mydirectory/*')) {
    $vars['theme_hook_suggestions'][] = 'page__mycustomtemplate';
  }
}
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.