Имя пользователя

Прислано: Dec0der

пн, 22/12/2008 - 09:37

Другие статьи по теме:

Включаю модуль profile (в стандартных). Добавляю новое текстовое поле: ФИО. При регистрации пользователь заполняет поле. Как сделать что бы именно это поле (ФИО) отображалось в подписи под новостью (там где автор, дата новости), а не логин пользователя?

поле имеет название profile_nm

Комментарии


Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Применить"
Опубликовано olk в пн, 22/12/2008 - 10:49.

переопределить theme username, например так

function phptemplate_username($object) {
 
  if ($object->uid && $object->name) {
      $u = user_load($object->uid);
//!!!!    тут как раз и используем наименование поля в вашем профиле
      if ( $u->profile_nm ) { $name = $u->profile_nm; }
      else { $name =  $object->name; }
    /*
    * Обрезаем длинные имена до 15 символов
    */
    if (drupal_strlen($name) > 20) {
      $name = drupal_substr($name, 0, 15) . '...';
    }
 
    if (user_access('access user profiles')) {
      $output = l($name, 'user/' . $object->uid, array('attributes' => array('title' => t('View user profile.'),'class' => 'ccfilter tooltip user')));
    }
    else {
      $output = check_plain($name);
    }
  }
  else if ($object->name) {
  	/*
  	* Для анонимоусов ставим атрибут для ссылки на homeoage rel=nofollow
  	*/
    if (!empty($object->homepage)) {
      $output = l($object->name, $object->homepage, array('attributes' => array('rel' => 'nofollow')));
    }
    else {
      $output = check_plain($object->name);
    }
     $output = '<span class="ccfilter tooltip user" title="Не зарегистрированный пользователь">'.$output.'</span>' ;
  }
  else {
    $output = variable_get('anonymous', t('Anonymous'));
  }
  return $output;
}


Опубликовано Dec0der в пн, 22/12/2008 - 12:32.

спасибо!
а какой переменной пользоваться для вставки этого имени в любое место страницы...
<?php print $чтоздесь ?>


Опубликовано olk в пн, 22/12/2008 - 12:38.

в нодах (node.tpl.php) это будет <?php if ($name) print $name?>
в комментах (comment.tpl.php) <?php if ($author) print $author?>
в page.tpl.php - не определено
общий формат вывода <?php print theme('username',$object); ?>
где в object дожно быть определено как минимум $object->uid и $object->name


Опубликовано Dec0der в пн, 22/12/2008 - 12:54.

а мне нужно именно для page
Как это сделать?


Опубликовано Dec0der в пн, 22/12/2008 - 12:56.

а мне нужно именно для page
Как это сделать?


Опубликовано olk в пн, 22/12/2008 - 13:09.

Если вы имеете ввиду тип материала "page", то это нода !
т.е.
копируете в своей теме файл node.tpl.php в файл node-page.tpl.php
и используете там <?php print $name?> в нужном месте ...
но надо учитывать, что переопределение theme username, работает для всего сайта , и везде где у вас выводятся алиасы пользователей будут выводиться имена из профиля,
если вам надо только для типа ноды - page ,
то перед заменой алиаса на имя в phptemplate_username, можно делать проверку


<?php
$u 
user_load($object->uid);
if( 
$object->type == 'page' && $u->profile_nm) { 
$name $u->profile_nm;
}
else {
$name $object->name;
}
?>


Опубликовано Geldora в пн, 22/12/2008 - 15:51.

Спасибо, как раз думала об этом - и вот, решение!


Опубликовано ingumsky@drupal.org в вт, 23/12/2008 - 00:31.

Большое спасибо за объяснение! Вот так нежданно-негаданно получил ответ на вопрос, за который думал браться заметно позднее.


Опубликовано andypost@drupal.org в вт, 23/12/2008 - 04:42.

Попробуйте  realname только в 6-dev версии есть пропуск переопределения, например для автокомплитов пользователей нужно имя пользователя, а не что-то из профиля


Опубликовано Dec0der в пт, 09/01/2009 - 14:32.

а именно на самой page.tpl.php можно? мне нужно на шапке...


Опубликовано Dec0der в пн, 12/01/2009 - 07:25.

как быть?


Опубликовано Dec0der в вт, 13/01/2009 - 08:44.

сайт разбит на поддомены, каждый поддомен - пользователь. вот и в шапке каждого поддомена должно быть имя пользователя...


Новое на сайте