Имя пользователя
Прислано: Dec0der
пн, 22/12/2008 - 09:37
Включаю модуль profile (в стандартных). Добавляю новое текстовое поле: ФИО. При регистрации пользователь заполняет поле. Как сделать что бы именно это поле (ФИО) отображалось в подписи под новостью (там где автор, дата новости), а не логин пользователя?
поле имеет название profile_nm
- Dec0der's blog
- Для комментирования войдите или зарегистрируйтесь
переопределить 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; }
- Для комментирования войдите или зарегистрируйтесь
спасибо!
а какой переменной пользоваться для вставки этого имени в любое место страницы...
<?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;
}
?>
- Для комментирования войдите или зарегистрируйтесь
Спасибо, как раз думала об этом - и вот, решение!
- Для комментирования войдите или зарегистрируйтесь
Большое спасибо за объяснение! Вот так нежданно-негаданно получил ответ на вопрос, за который думал браться заметно позднее.
- Для комментирования войдите или зарегистрируйтесь
Попробуйте
realname только в 6-dev версии есть пропуск переопределения, например для автокомплитов пользователей нужно имя пользователя, а не что-то из профиля
- Для комментирования войдите или зарегистрируйтесь
а именно на самой page.tpl.php можно? мне нужно на шапке...
- Для комментирования войдите или зарегистрируйтесь
как быть?
- Для комментирования войдите или зарегистрируйтесь
сайт разбит на поддомены, каждый поддомен - пользователь. вот и в шапке каждого поддомена должно быть имя пользователя...
- Для комментирования войдите или зарегистрируйтесь



Комментарии