Кастомизация коментариев

Аватар пользователя Meroi Meroi 10 октября 2016 в 13:13

Добрый день.
Прошу помощи.
Есть сайт футбольной команды. Для зарегистрированных на сайте болельщиков клуба введены клубные карты с разными статусами (болельщик, любитель, друг клуба и пр.). Комментарии материалов разрешены только зарегистрированным пользователям. Необходимо сделать так чтобы при отображении комментария пользователя рядом с его именем отображался статус его клубной карты.
Добавил в таксономии словарь, в него добавил термины с разными статусами. В свойствах пользователя добавил поле и привязал его к словарю.
При переходе на страницу пользователя статус клубной карты отображается.
Осталось только выводить его в заголовке комментария.
На сайте используется нестандартная тема, покопавшись в файлах темы нашел процедуру формирования строки для вывода в комментарии имени пользователя и даты создания комментария. Данные в ней берутся из массива $variables.
Подскажите пожалуйста как в этот массив добавить элемент содержащий статус клубной карты пользователя.
С Drupal начал знакомство только неделю назад и может я вообще не в ту сторону начал копать.

0 Thanks

Комментарии

Аватар пользователя bumble bumble 14 октября 2016 в 16:35
1

В файле template.php текущей темы:

<?php
function ИМЯ_ТЕМЫ_preprocess_comment(&$variables) {
  
$user user_load($variables['user']->uid); // Загрузка пользователя
  
if (!empty($user->field_ИМЯ_ПОЛЯ['und'][0])) {
    
$field field_view_value('user'$user'field_ИМЯ_ПОЛЯ'$user->field_ИМЯ_ПОЛЯ['und'][0]);
    
$variables['user_term'] = $field;
  }
}
?>

ИМЯ_ТЕМЫ - заменить машинным именем темы.
ИМЯ_ПОЛЯ - заменить машинным именем поля.
В шаблоне комментария (comment.tpl.php) будет доступна переменная $user_term, выводить отрендеренного значения:

<?php if (isset($user_term)): ?>
  <?php print render($user_term); ?>
  <?php // Или просто значение: $user_term['#title'], в таком случае без рендера; ?>
<?php endif; ?>
Аватар пользователя Meroi Meroi 12 октября 2016 в 11:01

Спасибо за ответ, очень помогли.
Только в таком исполнении в каждом комментарии возле имени комментатора выводит статус пользователя, который просматривает страницу, а не комментатора.
На сколько я понял user_load($variables['user']->uid) возвращает текущего пользователя.
Изменил на
user_load($variables['comment']->uid)
Теперь возвращает пользователя, который создал комментарий, предварительно проверив не равен ли $variables['comment']->uid нулю, чтобы отсеять анонимных пользователей.
Может еще можете подсказать толковую литературу, где можно было бы прочитать по поводу всего, что было задействовано в примерах выше, что бы я больше не задавал таких глупых вопросов?