Включаю модуль profile (в стандартных). Добавляю новое текстовое поле: ФИО. При регистрации пользователь заполняет поле. Как сделать что бы именно это поле (ФИО) отображалось в подписи под новостью (там где автор, дата новости), а не логин пользователя?
поле имеет название profile_nm
Комментарии
переопределить theme username, например так
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;
}
спасибо!
а какой переменной пользоваться для вставки этого имени в любое место страницы...
<?php print $чтоздесь ?>
в нодах (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
а мне нужно именно для page
Как это сделать?
а мне нужно именно для page
Как это сделать?
Если вы имеете ввиду тип материала "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;
}
?>
Спасибо, как раз думала об этом - и вот, решение!
Большое спасибо за объяснение! Вот так нежданно-негаданно получил ответ на вопрос, за который думал браться заметно позднее.
Попробуйте [module=realname] только в 6-dev версии есть пропуск переопределения, например для автокомплитов пользователей нужно имя пользователя, а не что-то из профиля
а именно на самой page.tpl.php можно? мне нужно на шапке...
как быть?
сайт разбит на поддомены, каждый поддомен - пользователь. вот и в шапке каждого поддомена должно быть имя пользователя...