ユーザーが匿名ユーザーまたは認証済みユーザーの場合、page1.tpl.phpを使用します。他のロールでは、page.tpl.phpを使用します。
どのようにしてコードを書くのですか?
追加のpage1.tpl.phpは必要ありません。 page.tpl.phpでは、以下を使用できます。
<?php
global $user;
if ($user->uid > 0) {
print /* Insert content only for authenticated users. */;
}
?>
ユーザーが「管理者」ロールを持っているときにコンテンツを表示したい場合は、以下を使用できます。
<?php
global $user;
if (in_array('administrator', array_values($user->roles)))) {
print /* Insert content only for users with "administrator" role. */;
}
?>
さまざまなシナリオでさまざまなテンプレートを処理する場合は、 コンテキストモジュール が優れたツールです。このケースは非常に単純なので、提案されているようなコードで処理できます。ただし、コンテキストモジュールを使用すると、管理が少し簡単になり、使用するテンプレートを決定できるだけでなく、挿入するブロックも決定できます。これは素晴らしいモジュールであり、私が作成するほとんどすべてのサイトで使用しているモジュールの1つです。
前処理機能が使えると思います。そんな感じ:
function yourtheme_preprocess_page($vars) {
global $user;
if (!$user->uid || in_array('user authenticated', array_values($user->roles))) {
$vars['template_files'][] = 'page1';
}
}
Drupalサイトのすべてのユーザーは、匿名ユーザーまたは認証済みユーザーです。匿名または認証済みユーザーにpage1.tpl.phpテンプレートを使用することを要求すると、page1.tpl.phpテンプレートが常に使用されます。
認証されたユーザーが他の特定の役割を持たないユーザーを意味する場合は、page.tpl.phpファイルで次のコードを使用できます。
if (empty(array_diff(array_keys($GLOBALS['user']->roles), array(0, 1))) {
// The user is anonymous, or the user doesn't have other roles
// apart the one of authenticated user.
}