Честно понимаю, что в самом Друпале это повсеместно используется, но как реализовано в коде не нашел.
пишу:
l($user->name, 'user/'. $user->uid)
Все нормально работает, но эта ссылка показывается всем, а как сделать, чтобы она показывалась только тем, кто может просматривать чужие профили? И чтобы для остальных была просто текстом. Неужели каждый раз проверку делать? Или есть готовая функция вывода ссылки на пользователя?
P.S. Поиск при запросе "ссылка на пользователя" находит кучу всего, но все не то.
Комментарии
Правильней наверное будет все-же theme('username',$user); которая сделает за вас все остальное.
В предыдущем примере $user я использовал только для примера, на самом деле есть только $node->uid
Если правильно понял, то чтобы получить подобную ссылку нужно написать
theme('username',user_load(array('uid' => $node->uid)))
да, уж....
Переименовал тему, чтобы не плодить новую.
Задача выглядит так.
Есть номер ноды (NID)
Нужно получить строчку типа:
"Заголовок ноды опубликовано Имя автора" и чтобы все было красиво.
Со второй частью разобрались, первая часть как я догадываюсь тоже должна вызываться через theme(),
а не через L() как это у меня сейчас, чтобы путь на ноду был не стандартным, а в виде синонима.
прочитал http://api.drupal.ru/api/function/theme/6 вроде почти все понятно, кроме самого главного, где узнавать допустимые значения первого параметра функции?
Вот тут например: http://api.drupal.org/api/group/themeable/6
Только под заголовок там ничего нет, я так думаю, его нужно именно через l() выводить. l(), кстати, синонимы умеет подставлять.
Спасибо за развернутый ответ!
А можно узнать как должен выглядеть вызов функции l() чтобы подставился синоним? А то у меня обратное получается - (подаешь синоним, выводится путь), а наоборот никак не получается.
Если объект ноды уже загружен, то
Насчет загруженного объекта ноды, уже включающего в себя $user - очень толково!
Но вот t() нехорошо так использовать, т.к. при переводе строки сразу возникнет проблема с порядком следования слов (который разный в разных языках и пользователь может захотеть его изменить). Лучше примерно так:
print t('!nodetitle published by !username',
array('!nodetitle' => l($node->title, "node/$node->nid"),
'!username' => theme('username', $node),));
Не понял вашего вопроса. А синоним существует вообще?
Просто когда я пользуюсь функцией l(), это обычно выглядит примерно так. Есть нода с заголовком 'About', nid=5 а синоним='about'. Я пишу l('About','node/5'), и функция возвращает мне ссылку на mysite/about, сама, автоматически.
Разобрался это у меня в голове что то переглючило.