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

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

Аватар пользователя Dec0der Dec0der 22 декабря 2008 в 12:37

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

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

Комментарии

Аватар пользователя olk olk 22 декабря 2008 в 13: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 Dec0der 22 декабря 2008 в 15:32

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

Аватар пользователя olk olk 22 декабря 2008 в 15: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

Аватар пользователя olk olk 22 декабря 2008 в 16: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;
}
?>
Аватар пользователя andypost@drupal.org andypost@drupal.org 23 декабря 2008 в 7:42

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

Аватар пользователя Dec0der Dec0der 13 января 2009 в 11:44

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