К сожалению не нашел на сайте подробного руководства как использовать user-profile.tpl.php при создании профиля пользователя, поэтому, для таких же как я чайников начинающих пользователей Drupal подробно расписал что делать с примерами кодов со своего сайта и выложил там же Создание сайта на CMS Drupal. Профиль пользователя.
Пример того, что получилось можно посмотреть в моем профиле на вышеупомянутом сайте:
Профиль Whellcome.
Вкратце перечислю основные пункты того, что было реализовано:
- Вывод текстового поля.
- Вывод свободно заполняемого списка.
- Вывод многострочного текстового поля.
- Вывод URL.
- Вывод даты.
- Вывод views.
Комментарии
мне очень пригодится ... СПАСИБО!
Красавчик
Возник следующий вопрос: генерируемые ссылки, например поля "Интересы", вместо поиска совпадений выдает 404. В чем причина?
А у меня все работает как надо, большое спасибо автору темы.
Я вот такой профиль сегодня сделал у себя, там еще фотографии и альбомы - http://wildural.ru/user/3
Мда... Странно...
Хотелось бы знать куда копать?
Благодаря whellcome разобрался. Для корректной работы необходимо было задать полю в профайле в параметре "Видимость":
[х] Публичное поле. Данные будут показываться на странице профиля и на страницах списков пользователей.
+ Ввести заголовок страницы. (иначе не работает)
P.S. Доп. инфа в тему http://drupal.org/node/35728
Djn почему я не люблю, когда хорошие материалы не дублируют на Др.ру!
Сайт ТС не отвечает!!! И посмотреть его статью не возможно...
Ни у кого копии не сохранилось?
У яндекса осталась копия
Спасибо за подсказку! (в гугле я искала, в яндексе не догадалась...)
Копирую сюда, надеюсь автор материала не будет против!
«Продвигаемся далее в покорении Друпала. Долго собирался с силами и наконец то сделал более-менее приличный профиль пользователя, пример можно посмотреть здесь : Профиль Whellcome. К сожалению на этот раз Российское сообщество Drupal дало весьма мало информации, но благодарен пользователю selff, который нашел и опубликовал там ссылку на нужный материал с сайта Drupal.org.
Большинство рецептов предлагались для Друпала 4.7 и 5.х, так что пришлось немного погуглить чтобы найти подходящие решения для CMS Drupal 6.x. Облегчает участь, то что в его стандартном решении присутствует механизм проверки наличия файла user-profile.tpl.php в теме и подмене стандартного вывода профиля его содержимым.
Итак, приступим. Изначально файл user-profile.tpl.php содержит следущий код, который печатает стандартный вывод профиля пользователя, если вдруг что-то не пойдет, всегда можно им воспользоваться .
<?php print $user_profile; ?>
</div>
Для того, чтобы нам воспользоваться всеми выгодами, которые предоставляет стандартная поставка Drupal 6.x, включим модуль Profile. Он позволяет создавать дополнительно 7 типов полей: текстовое поле, многострочное текстовое поле, флажок, выбор из списка, свободно заполняемый список, URL и дата. Я использовал 6 из них, все, кроме флажка, его вывод пока придется изучить на Drupal.org в английском варианте Handling checkbox profile fields.
1. Вывод текстового поля.
Использовался для ввода имени, города проживания, icq и т.п. в конкретном примере так же включена возможность поиска земляков на сайте (пользователей одинаково заполнивших поле профиля "город").
$profield = check_plain($account->profile_city);?>
<dt><?php print t('City:')?></dt> <dd> <?php print l($profield, 'profile/profile_city/'.$profield) ?> </dd>
<?php endif; ?>
check_plain($text) функция друпала, конвертирует спец. символы в строку простого текста для показа как HTML. Не забываем вставлять во избежание неприятнстей. Вывод выбора из списка точно такой же, как простого тестового поля.
2. Вывод свободно заполняемого списка.
Использовался для списков интересов, профессий, хобби, и т.п. так же в вывод включен поиск "сопрофильников"
$fieldname='profile_interests'?>
<dt><?php print t('interests:')?><dt>
<dd><ul>
<?php
$temp_array = split ( "[\n,]" , $account->$fieldname );
$count_total = count ( $temp_array );
for( $counter = 0 ; $counter < $count_total ; $counter ++): ?>
<?php $link = each ( $temp_array ) ?>
<li> <?php print l ( $link [ value ], 'profile/' . $fieldname . '/' . preg_replace ( '[\s]' , '+' , trim ( $link [ value ]))) ?> </li>
<?php endfor ?>
</ul></dd>
<?php endif ?>
Вот как то так .
3. Вывод многострочного текстового поля.
Дополнительная информация о себе и самое интересное поле приветствия, выводимое в заголовке профиля пользователя.
«
$profield= check_markup($account->profile_treatment); ?>
<div class="treatment"> <?php print $profield ?> </div>
<?php endif ?>
»
check_markup($text, $format = FILTER_FORMAT_DEFAULT, $check = TRUE) стандартная функция друпала применения фильтра без параметров.
самый интересный на сегодняшний день пример использования поля здесь: профиль пользователя дневник блоггера
4. Вывод URL
$profield=check_url($account->profile_site);?>
<dt>Website URL:</dt><dd><a href="<?php print $profield?>"> <?php print $profield?> </a></dd>
<?php endif; ?>
Все ясно, далее...
5. Вывод даты
<dt><?php print t('Birthday:')?></dt>
<dd><?php
print $account->profile_birthday['day'].".".$account->profile_birthday['month'].".".$account->profile_birthday['year'];
?></dd>
<?php endif ?>
Не самый привлекательный вариант, поищу еще опубликую здесь же
6. Вывод views.
Все просто: строите представление и в нашем файлике user-profile.tpl.php ставите его вывод таким образом:
print views_embed_view('UserBlog',$display_id='default',$account->name);
?>
Первый параметр -- имя представления, второй -- имя вывода, третий -- аргумент самого представления.
Теперь все это ставим в нужные места, красиво оформляем стилями и, вуаля! Наш профиль пользователя готов, да здравствует Drupal»
Ссылки битые.А было бы интересно посмотреть пример решения.
Ссылки битые.А было бы интересно посмотреть пример решения.
а как по этому же принципу вывести karma и rank пользователя?
разобрался
<?php print $account->karma; ?>
<?php print $account->rank; ?>
прошу прощения за временное отсутствие, спасибо за отклики, и что нашли таки статью яндексе.
спасибо Geldora, ни разу не против
-pax-, отличный профиль получился!
Мегаспасибо!!!
Искал...
Так, а если поле не заполнено?
<?php
$pfieldname = 'profile_name';
if(($account->$pfieldname) == '') {
print '<span class="profile-no-info">'. t('No info yet').'</span>';
} else {
print $account->$pfieldname;
}
?>
так правильнее
эээ... ну тогда, при множестве полей, весь профиль будет забит ноуетами
А у меня интересы не рабоатют как надо при клике не показывает аналогиченых пользователей с этими интересами
как теже города страны.
и как вывести
свободно заполняемый список (для пола человека использую)
и флажки ???
очень все еще актуально...
и как выводить блог стрчоку гостевую...
историю, рейтинг... и другие вещи?
На сколько я помню? кто-то уже задавал вопрос. Сначала надо сделать поле публичным и определить заголовок вида: "пользователи которым интересно %value"
С помощью views можно вывести что угодно, а вообще, вывод профиля через user-profile.tpl.php не предназначен для того чтобы «все само делалось», если переопределяешь стандартный вывод будь готов поработать головой и руками.
Так это понятно, но если не публично зачем интересы выводятся как ссылка. как это убрать?
А что значит "выводятся", сами что-ли? ;)) Сначала нужно выводить ссылкой, теперь не нужно...
Если нужен конкретный ответ, задай конкретный вопрос: требуемый результат, последовательность выполненных действий и пример своего кода. Тогда и будем посмотреть.
Можно в личку.
А как выводится аватар пользователя?
А как выводится аватар пользователя?
<?php print theme('user_picture', $account) ?>
А скажите, люди добрые, как сделать дополнительную вкладку, допустим "Галереи пользователя" и туда запихнуть представление?
во вьюхе делаешь все в кладке меню
Как можно красиво оформить вывод даты рождения?
Вместо 10.1.1976 что-то типа: 10 января 1976 г.
Есть варианты?
/admin/settings/date-time/formats
Вот проблема тут с выводом урл-а, то бишь сайта.
Вот этот код выводит урл
$profield=check_url($account->profile_site);?>
<dt>Website URL:</dt><dd><a href="<?php print $profield?>"> <?php print $profield?> </a></dd>
<?php endif; ?>
Но если юзер вводит урл без http:// например www.sayt.ru то по клику на него попадаем на страницу: http://мойсайт.ru/user/www.sayt.ru
Если с http:// то все нормально
Можно это полечить?
Ничего умнее в голову пока не пришло, но, по-моему, тут умнее и не надо:
<?php
$accurl='http://'.str_replace('http://','',$account->profile_site);
$profield=check_url($accurl);
?>
Если что, старшие товарищи, надеюсь, поправят
Работает, только появилась еще проблема: если нету сайта то раньше у меня не появлялась надпись сайт:, теперь появляется такая: Сайт: http://
Вывод многострочного текстового поля
$profield= check_markup($account->profile_treatment); ?>
<div class="treatment"> <?php print $profield ?> </div>
<?php endif ?>
А как сделать, чтобы оно выводилось с изображениями? У меня в текст вставлены фотки, но выводится без них.
Люди добрые, подскажите, как сделать views? что бы он выводил материалы пользователя, в чем профиле сейчас находишься?
P.S. Я переделал views frontpage, он выводит материалы как на главной, а как отсортировать по пользователю?
Аргументы - Автор - Подставить аргумент по умолчанию - ID пользователя из URL
проблема
http://drupal.ru/node/56182
Не показывает содержание профиля если юзер не добавил материал
_
Пробовал вставить
print views_embed_view('UserBlog',$display_id='default',$account->name);
вообще не цепляет
1. Профиль слишком уж привязан к вьювсу, поставь какую-то фразу при пустом выводе.
2. Здесь, вообще, аргумент - имя пользователя, а не ID, к тому же, не имея вьюхи перед глазами, трудно вообще о чем то говорить.
В template
<?phpfunction convert_profile_date($profile_date_ar) {
// takes a profile date array and converts it to a date variable.
$output = mktime(0, 0, 0, $profile_date_ar['month'], $profile_date_ar['day'], $profile_date_ar['year']);
return $output;
}?>
В user-profile.tpl
<?php $converted_date = convert_profile_date($account->profile_birthday); print date('j F, Y', $converted_date);?>
profile_birthday - название меняем на своё, 'j F, Y' - по вкусу.
Есть одна маленькая просьба.. напишите всё тоже самое для 7-ки
для 7 ки все тоже самое... практически. да и зачем там это нужно... там же профиль из сскполей состоит...
Сразу видно -> любитель стандартных тем и настроек "по-умолчанию"
Вообщем, всё оказалось проще, чем казалось разобрался сам.
Всё отлично написано на d.org по запросу user-profile.tpl.php изменений дофига, примеры с D6 можно не смотреть вообще.
ниодной темы не ставил стандартных смекаешь фанаатзер?
ОФФ:
Советую русский язык всё-таки выучить. Через "не могу" и через "не хочу". Или он у тебя не родной?
Всё сложнее становится тебя читать, чувак
так удафф ком рулит. всяко.
да...
пишиисчо!
подскажите как проверку сделать на № роли?