Продвигаемся далее в покорении Друпала. Долго собирался с силами и наконец то сделал более-менее приличный профиль пользователя, пример можно посмотреть здесь : Профиль 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.
- Вывод текстового поля.
Использовался для ввода имени, города проживания, icq и т.п. в конкретном примере так же включена возможность поиска земляков на сайте (пользователей одинаково заполнивших поле профиля "город").
<?php if( $account->profile_city ):check_plain($text) функция друпала, конвертирует спец. символы в строку простого текста для показа как HTML. Не забываем вставлять во избежание неприятнстей. Вывод выбора из списка точно такой же, как простого тестового поля.
$profield = check_plain($account->profile_city);?>
<dt><?php print t('City:')?></dt> <dd> <?php print l($profield, 'profile/profile_city/'.$profield) ?> </dd>
<?php endif; ?> - Вывод свободно заполняемого списка.
Использовался для списков интересов, профессий, хобби, и т.п. так же в вывод включен поиск "сопрофильников"
<?php if( $account->profile_interests):
$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 ?>
Вот как то так
. - Вывод многострочного текстового поля.
Дополнительная информация о себе и самое интересное поле приветствия, выводимое в заголовке профиля пользователя.
<?php if( $account->profile_treatment ):check_markup($text, $format = FILTER_FORMAT_DEFAULT, $check = TRUE) стандартная функция друпала применения фильтра без параметров.
$profield= check_markup($account->profile_treatment); ?>
<div class="treatment"> <?php print $profield ?> </div>
<?php endif ?>
самый интересный на сегодняшний день пример использования поля здесь: профиль пользователя дневник блоггера - Вывод URL
<?php if($account->profile_site):Все ясно, далее...
$profield=check_url($account->profile_site);?>
<dt>Website URL:</dt><dd><a href="<?php print $profield?>"> <?php print $profield?> </a></dd>
<?php endif; ?> - Вывод даты
<?php if( $account->profile_birthday ): ?>
<dt><?php print t('Birthday:')?></dt>
<dd><?php
print $account->profile_birthday['day'].".".$account->profile_birthday['month'].".".$account->profile_birthday['year'];
?></dd>
<?php endif ?>
Не самый привлекательный вариант, поищу еще опубликую здесь же
- Вывод views.
Все просто: строите представление и в нашем файлике user-profile.tpl.php ставите его вывод таким образом:
<?phpПервый параметр -- имя представления, второй -- имя вывода, третий -- аргумент самого представления.
print views_embed_view('UserBlog',$display_id='default',$account->name);
?>
Теперь все это ставим в нужные места, красиво оформляем стилями и, вуаля! Наш профиль пользователя готов, да здравствует Drupal 
- whellcome's blog
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
- 9505 просмотров
Все здорово и просто, не надо никакие content_profiles или panels+Advanced Profile Kit устанавливать!
А вы могли бы подробней написать о возможности поиска земляков: у меня пишет "страница не найдена". Это нужно views создавать?
Для того, чтобы работал поиск пользователя по полю, нужны две обязательные вещи: сделать поле публичным и заполнить заголовок страницы вывода с использованием токена %value.
whellcome, спасибо за материал, он мне очень помог.