Drupal 7では、テーマプロセス関数を追加して、必要なボディクラスを追加します。
function template_preprocess_html(&$variables) {
$variables['classes_array'][] = $variables['is_front'] ? 'front' : 'not-front';
// Add a class that tells us whether the page is viewed by an authenticated user or not.
$variables['classes_array'][] = $variables['logged_in'] ? 'logged-in' : 'not-logged-in';
}
D8このテーマ関数は存在します ですが、ユーザーに必要なすべての変数がありません。
わかりましたDrupal 8では、TWIGを使用して、必要なコンテンツタイプまたはユーザーのボディクラスを出力します。
Html.html.twig
{%
set body_classes = [
logged_in ? 'user-logged-in',
not root_path ? 'path-frontpage' : 'path-' ~ root_path|clean_class,
node_type ? 'page-node-type-' ~ node_type|clean_class,
db_offline ? 'db-offline',
user.hasPermission('administer') ? 'isAdmin',
user.getRoles()|join(' role_')
]
%}
次に、この行がボディクラスに追加されていることを確認します
<body{{ attributes.addClass(body_classes) }}>
したがって、ユーザーがログアウトしている場合は、ロールクラスを使用してユーザーを識別できます。
.anonymous { }
または :not Cssセレクター :notを使用できます
:not.user-logged-in {}
Html.html.twigとpage.html.twigには、デフォルトでlogged_in
、is_front
、is_admin
などのさまざまな変数が用意されています。これらの変数を条件として使用して、クラスをbodyタグに追加できます。 path-frontpage
、page-node-type-*
などの一部のクラスは、デフォルトでノードに存在し、明示的に追加する必要はありません。