Здравствуйте!
Проблема описана в заголовке. Теперь подробней:
имеется поле "Название организации", это поле надо привязать к профилю в виде ссылки. Т.е. надо чтобы отображалось не "имя" пользователя, (т.к. при регистрации организация не может использовать в качестве имени своё название), а именно название.
Например в стандартном виде публикация выглядит так:
Posted Ср, 01/14/2009 - 12:06 by username
так вот этот username не нужен. вместо него надо отобразить название организации, т.е. должно быть так:
Posted Ср, 01/14/2009 - 12:06 by ТОО "Фирма"
Комментарии
темизировать.
каким образом?
http://drupal.org/node/35728
Не разобрался как сделать линк именно на профиль. Пока получилось лишь отлинковать на
http://www.sitename.com/profile_org/название организации а надо на /user/id
ну это же просто, наверняка он доступен в виде переменной. или просто достаньте аргумент.
Судя по примерам просто, но не так то просто найти нужную переменную.
Например в шаблоне, при выводе автора материала используется
я просто взял и тоже самое прописал в шаблоне профиля:
но выводится Гость вместо текущего пользователя
я только только с друпалом разбираться начал и в пыхпыхе не силен тоже, так что не судите строго
http://drupal.ru/node/19895
Тут рассмотрен вопрос кеширования имен пользователей, но в принципе именно эту функцию и нужно ковырять.
Почитайте мой комментарий внизу этого поста. Я именно использовал такой способ чтобы вместо логина ставить значение из поля профиля user_name.
Вот мой код:
<?php
function bein_username($object) {
static $users = array();
if ($object->uid && $object->name) {
if ($users[$object->uid]->uid) {
$user_object = $users[$object->uid];
}
else {
$user_object = user_load(array('uid' => $object->uid));
$users[$object->uid] = $user_object;
}
// Shorten the name when it is too long or it will break many tables.
if (drupal_strlen($object->name) > 20) {
$name = drupal_substr($object->name, 0, 15) .'...';
}
else {
$name = $object->name;
}
if (user_access('access user profiles')) {
if ($user_object->user_name) {
$output = l($user_object->user_name, 'user/'. $object->uid, array('title' => t('View user profile.')));
}
else {
$output = l($name, 'user/'. $object->uid, array('title' => t('View user profile.')));
}
}
else {
$output = check_plain($name);
}
}
elseif ($object->name) {
// Sometimes modules display content composed by people who are
// not registered members of the site (e.g. mailing list or news
// aggregator modules). This clause enables modules to display
// the true author of the content.
if ($object->homepage) {
$output = l($object->name, $object->homepage);
}
else {
$output = check_plain($object->name);
}
$output .= ' ('. t('not verified') .')';
}
else {
$output = variable_get('anonymous', t('Anonymous'));
}
return $output;
}
?>
Спасибо!
Через http://drupal.ru/node/19895 нашел модуль Real name, который делает как раз то, что мне нужно! Правда как оказалось он немного "бажный" что-ли... в общем при активации модуля вываливалась ошибка
Cannot redeclare phptemplate_username()...
пришлось полностью удалить содержимое realname_theme.inc и всё заработало!
Возникает вопрос, зачем ставить модуль, если потом придется удалять содержимое из файла модуля?
это мелочи. а ваш код надо, как я понял, добавить в template.php?
P.S. Сделал по вашему методу. Работает
А можно ли заставить views видеть, что это ссылка? Т.е. у меня есть страница, созданная при помощи views2. Страница выводит дату, заголовок (как ссылка на сам материал, фирма, сайт, и т.д. Так вот столбец "фирма" отображается простым текстом. Хотелось бы чтобы отображалось как ссылка на профиль
Разобрался. Просто заменил во вьювсе поле profile_org на стандартное и все заработало... почти. Анонимный пользователь видит имя пользователя (логин) а в моём случае это не нужно.
Всё! Всем спасибо! Особенно seaji
Заменил
$output = check_plain($name);
на
Всё! Всем спасибо! Особенно seaji
Заменил
$output = check_plain($name);
на