Делаю так:
В template.php вставляю:
// Pass to phptemplate, including translating the parameters to an associative array. The element names are the names that the variables
// will be assigned within your template.
/* potential need for other code to extract field info */
return _phptemplate_callback('user_profile', array('user' => $user, 'fields' => $fields));
}
Потом создаю user_profile.tpl.php
С примерно таким содержанием:
<div align="left"><?php if($user->picture) {print theme('user_picture', $user);}?>
<h2 class="title">Основные данные</h2>
<dt class="user-member">Статус:</dt><dd class="user-member">
<?php
print "<div class=\"fields\">";
$time_period = variable_get('user_block_seconds_online', 600);
$users = db_query("SELECT DISTINCT(uid), access FROM {users} WHERE access >= %d AND uid = %s", time() - $time_period, $user->uid);
$total_users = db_num_rows($users);
if ($total_users == 1)
{
$output = t('На сайте');
}
else
{
$output = t('Отсутствует');
}
print $output;
?>
</dd></dl>
<dt class="user-member">Время участия:</dt><dd class="user-member"><?php print (format_interval(time() - $user->created));?></dd></dl>
<dt class="user-member">Зарегистрирован:</dt><dd class="user-member"><?php print (format_date($user->created, 'small', 'F j, o'));?></dd></dl>
<br />
<h2 class="title">Контакты</h2>
<?php
global $user;
profile_load_profile($user);
if ($user->profile_icq > '1')
{
print ("<dt class=\"user-member\">Номер ICQ:</dt><dd class=\"user-member\">");
print ("<img src=\"http://web.icq.com/whitepages/online?icq=") ;
print ("$user->profile_icq") ;
print ("&img=5\" alt=\"Status\">") ;
print ($user->profile_icq);
print ("</dd></dl>");
}
?>
<?php
print ("$user->name");
?>
</div>
Смотрю свой профиль все хорошо, все данные выводятся корректно.
Смотрю чужой профиль и вижу свои данные, как это победить, подозреваю, конечно что все дело в переменной $user, но на какую ее менять непонятно. Подскажите?
Комментарии
убрать строчку
<?php
global $user;
?>
Каждый кусок php кода, заключенный в
?>
выполняется отдельно как я понимаю и внекоторых кусках кода директива global $user; не используется. Даже после ее удаления все остается по прежнему. ДЛя простоты проверки предлагаю код
if($user->picture) {print theme('user_picture', $user);}
?>
Этот кусок кода взял с офф сайта друпала, но у меня когда заходишь в любого юзера показывается своя аватара.
странновато имхо. ведь это же параметр для фукции function phptemplate_user_profile($user, $fields = array()) и если этот параметр берется из глобального в каждом новом куске кода между тегами пхп...
в любом случае, можешь воспользоваться функцией user_load(...)
Был неправ проверил, вы точно ответили вся проблема была в директиве global $user. Спасибо