Темизация поля Справочный текст - описание поля

Главные вкладки

Аватар пользователя nikolasun nikolasun 2 ноября 2018 в 10:58

Каким образом можно темизировать поле Справочный текст для определеноного поля? Нужно, чтобы значение поля менялось в зависимости от роля пользователя.

Лучший ответ

Аватар пользователя Orion76 Orion76 2 ноября 2018 в 22:23

Нет.. как говорил один врач: ни в чем себе не отказывай, но лучше не надо-)

тогда вместо имени роли лучше подставлять ее ID

<?php
/**
 * Override or insert variables into the html template.
 */
function MYTHEMENAME_preprocess_html(&$vars) {
global 
$user;
$rids=user_roles();

foreach(

$user->roles as $role)
    
$vars['classes_array'][] = 'user-role--' array_search($role,$rids );
}
}
?>

классы будут типа таких:
user-role--0
user-role--1
user-role--2

ИД роли можно подсмотреть в ссылках редактирования разрешений: /admin/people/permissions/roles

Комментарии

Аватар пользователя Orion76 Orion76 2 ноября 2018 в 17:13

надо добавить с тегу body класс, соответствующий роли пользователя.
Например user-role-anonym, user-role-admin и т.п.

И простыми css-правилами назначить стили нужным элементам

.user-role--anonym .field-description{
color: #f00;
}

.user-role--admin .field-description{
color: #0f0;
}

а поможет Вам в этом этот модуль: https://www.drupal.org/project/bodyclasses

или хук темы:

<?php
/**
 * Override or insert variables into the html template.
 */
function MYTHEMENAME_preprocess_html(&$vars) {
global 
$user;
foreach(
$user->roles as $role)
    
$vars['classes_array'][] = 'user-role--' $role;
}
?>
Аватар пользователя nikolasun nikolasun 2 ноября 2018 в 21:07

Спасибо большое. Вариант с хуком отлично работает, но проблема в том, что у меня имена ролей заданы кириллицей и получается, что класс выходит типа user-role--Неактивный. Это нормально?

Аватар пользователя Orion76 Orion76 2 ноября 2018 в 22:23

Нет.. как говорил один врач: ни в чем себе не отказывай, но лучше не надо-)

тогда вместо имени роли лучше подставлять ее ID

<?php
/**
 * Override or insert variables into the html template.
 */
function MYTHEMENAME_preprocess_html(&$vars) {
global 
$user;
$rids=user_roles();

foreach(

$user->roles as $role)
    
$vars['classes_array'][] = 'user-role--' array_search($role,$rids );
}
}
?>

классы будут типа таких:
user-role--0
user-role--1
user-role--2

ИД роли можно подсмотреть в ссылках редактирования разрешений: /admin/people/permissions/roles