Отобразить данные из профиля пользователя.

0 Пользователей и 1 Гость просматривают эту тему.
  • 17 Ответов
  • 5059 Просмотров
*

nOObMeister

  • Осваиваюсь на форуме
  • ***
  • 129
  • 6
  • хД)))
Нужно отобразить информацию о пользователе, скажем телефон или любую другую инфу, в каком-то другом месте внутри профиля пользователя.

Поковырялся в файлах default_custom.php и profile.xml. Результат нулевой и много потраченного вникуда времени.

Пробовал так же такой же код, который по идее должен работать, но не работает...

<?php return JFactory::getUser()->get('phone','');?>

По идее эта строчка отображает массив данных:

         <?php if (JHtml::isRegistered('users.'.$field->id)):?>
            <?php echo JHtml::_('users.'.$field->id, $field->value);?>
         <?php elseif (JHtml::isRegistered('users.'.$field->fieldname)):?>
            <?php echo JHtml::_('users.'.$field->fieldname, $field->value);?>
         <?php elseif (JHtml::isRegistered('users.'.$field->type)):?>
            <?php echo JHtml::_('users.'.$field->type, $field->value);?>
         <?php else:?>
            <?php echo JHtml::_('users.value', $field->value);?>

Но как сделать чтобы он отображал только какой-то определенное поле или значение и в том месте, куда я его сам захочу поставить, а не сразу все значения скопом..

Есть идеи какие по этому поводу?

*

Fedor Vlasenko

  • Профи
  • ********
  • 3800
  • 698
  • Все начинается с Value
Код: php
<?php print_r (JFactory::getUser()); ?>
затем анализируя данные выводим
Код: php-brief
<? 
$myuser = JFactory::getUser();
echo $myuser->name;
echo $myuser->username;
echo $myuser->email;
// и т .д исходя из ранее выведенной информацией print_r
?>

*

nOObMeister

  • Осваиваюсь на форуме
  • ***
  • 129
  • 6
  • хД)))
Poznakomlus, name и юзернейм он выводит без проблем.. а вот к примеру номер телефона или город, не выводит нивкакую. Наверное потому что эти данные идут из plugin profiler.

На всякий случай показываю весь код из двух файлов отвечающих за отображение этих данных..

Код
<?php
/**
 * @package Joomla.Site
 * @subpackage com_users
 * @copyright Copyright (C) 2005 - 2012 Open Source Matters, Inc. All rights reserved.
 * @license GNU General Public License version 2 or later; see LICENSE.txt
 * @since 1.6
 */
defined('_JEXEC') or die;

JLoader::register('JHtmlUsers', JPATH_COMPONENT . '/helpers/html/users.php');
JHtml::register('users.spacer', array('JHtmlUsers', 'spacer'));

$fieldsets = $this->form->getFieldsets();
if (isset($fieldsets['core']))   unset($fieldsets['core']);
if (isset($fieldsets['params'])) unset($fieldsets['params']);

foreach ($fieldsets as $group => $fieldset): // Iterate through the form fieldsets
$fields = $this->form->getFieldset($group);
if (count($fields)):
?>
<fieldset id="users-profile-custom" class="users-profile-custom-<?php echo $group;?>">
<?php if (isset($fieldset->label)):// If the fieldset has a label set, display it as the legend.?>
<legend><span>Contact Info</span></legend>
<?php endif;?>
<dl>
   
<?php foreach ($fields as $field):
if (!$field->hidden) :?>
<dt><?php echo $field->title; ?></dt>
<dd>
<?php if (JHtml::isRegistered('users.'.$field->id)):?>
<?php echo JHtml::_('users.'.$field->id, $field->value);?>
<?php elseif (JHtml::isRegistered('users.'.$field->fieldname)):?>
<?php echo JHtml::_('users.'.$field->fieldname, $field->value);?>
<?php elseif (JHtml::isRegistered('users.'.$field->type)):?>
<?php echo JHtml::_('users.'.$field->type, $field->value);?>
               

<?php else:?>
<?php echo JHtml::_('users.value', $field->value);?>

<?php endif;?>
           
</dd>

<?php endif;?>
<?php endforeach;?>
</dl>
</fieldset>


<?php endif;?>
<?php endforeach;?>


Код
<form>
<fields name="profile">
<fieldset name="profile"
label="PLG_USER_PROFILE_SLIDER_LABEL"
>
<field
name="address1"
type="text"
id="address1"
description="PLG_USER_PROFILE_FIELD_ADDRESS1_DESC"
filter="string"
label="PLG_USER_PROFILE_FIELD_ADDRESS1_LABEL"
message="PLG_USER_PROFILE_FIELD_ADDRESS1_MESSAGE"
size="30"
/>

<field
name="address2"
type="text"
id="address2"
description="PLG_USER_PROFILE_FIELD_ADDRESS2_DESC"
filter="string"
label="PLG_USER_PROFILE_FIELD_ADDRESS2_LABEL"
message="PLG_USER_PROFILE_FIELD_ADDRESS1_MESSAGE"
size="30"
/>

<field
name="city"
type="text"
id="city"
description="PLG_USER_PROFILE_FIELD_CITY_DESC"
filter="string"
label="PLG_USER_PROFILE_FIELD_CITY_LABEL"
message="PLG_USER_PROFILE_FIELD_CITY_MESSAGE"
size="30"
/>


Пробовал делать по разному..

echo $fieldsets->favoritebook;
echo $fields->favoritebook;
echo $fields->favoritebook->value;
echo $favoritebook->value;

не отображает и все... Там наверное нужно писать $myuser = JFactory::getUser();, не myuser, а какой-нибуть fieldset... Только как все это писать не пойму...

*

Fedor Vlasenko

  • Профи
  • ********
  • 3800
  • 698
  • Все начинается с Value
Когда распечатывается <?php print_r (JFactory::getUser()); ?> nOObMeister данные есть ваши здесь?

*

nOObMeister

  • Осваиваюсь на форуме
  • ***
  • 129
  • 6
  • хД)))
Всмысле мои данные?

Все данные естественно давно вбиты в базу данных через profile, если в таблице нету данных, а стоит команда их отобразить. то отображается no data entered вроде..

Просто проблема в том, что данные которые мне нужны (адреса, явки, телефоны) лежат в каком-то отдельном месте от места где хранится пароль, имейл и логин пользователя.

Мне нужно вывести данные, которые находят в User manager - myClient - вкладка user profile, которая становится доступной если открыть встроенный в Joomla плагин profile.
« Последнее редактирование: 24.05.2012, 15:00:12 от nOObMeister »

*

Fedor Vlasenko

  • Профи
  • ********
  • 3800
  • 698
  • Все начинается с Value
Код: php-brief
<?php
$db = JFactory::getDbo();
$db->setQuery(
'SELECT profile_key, profile_value FROM #__user_profiles' .
' WHERE user_id = '.(int) JFactory::getUser()->id." AND profile_key LIKE 'profile.%'" .
' ORDER BY ordering'
);
$results = $db->loadRowList();
$profile = array();
foreach ($results as $v)
{
$k = str_replace('profile.', '', $v[0]);
$profile[$k] = json_decode($v[1], true);
}
//print_r ($profile);
echo $profile[phone];
?>

*

nOObMeister

  • Осваиваюсь на форуме
  • ***
  • 129
  • 6
  • хД)))
Спасибо большое, завтра попробую!

К сожалению сегодня нет времени проверять.

*

shibaevvv

  • Осваиваюсь на форуме
  • ***
  • 60
  • 3
делал так:

Код
jimport( 'joomla.user.helper' );
$userProfile = JUserHelper::getProfile();
ну а дальше:
Код
echo 'Адрес Василия: '.$userProfile->profile[address2].' город: и тд ';
« Последнее редактирование: 25.05.2012, 00:18:15 от shibaevvv »

*

nOObMeister

  • Осваиваюсь на форуме
  • ***
  • 129
  • 6
  • хД)))
Печалька, не сработал ни один из способов..

Пробовал так писать... не работает.  :'(

Код
<?php
jimport( 'joomla.user.helper' );
$userProfile = JUserHelper::getProfile();
echo 'About: '.$userProfile->profile[aboutme].'aboutme';
?>

Ошибок никаких не выдает, но ничего и не отбражает..
« Последнее редактирование: 27.05.2012, 21:08:32 от nOObMeister »

*

Chopivkiy

  • Новичок
  • *
  • 3
  • 0
Добрый день, подскажите как сделать так, что бы подтягивался в форму, отправляемую по почте мобильный телефон зарегистрированного пользователя?
К примеру этот код добавляет имя пользователя. А с телефоном не получается.

//<code>
$myuser = JFactory::getUser();
return $myuser->name;
//</code>

Заранее спасибо.

*

SWoz

  • Осваиваюсь на форуме
  • ***
  • 62
  • -1
Как отобразить данные из профиля пользователя, прямо в шаблоне?

*/joomla/templates/shablon/
В главном файле шаблона index.php

Добавляете в самом начале файла, после

// no direct access
defined( '_JEXEC' ) or die;

следующие строки

jimport( 'joomla.user.helper' );
$userprofile = JUserHelper::getProfile();

дальше выводим нужные данные из массива

<?php echo print_r($userprofile->profile); ?> - вывод всего массива "ключ - значение"

<?php echo $userprofile->profile[aboutme]; ?> - вывод определенного значения (в данном случае "информация о пользователе")

Все стандартные ключи, думаю расшифровывать не надо:
[address1]
[address2]
[city]
[region]
[country]
[postal_code]
[phone]
[website]
[favoritebook]
[aboutme]

*

romangal

  • Новичок
  • *
  • 7
  • 0
Подскажите пожалуйста, почему  телефон видят только пользователи вошедшие на сайт, а для всех он не отображается?
Код
<?php
$db = JFactory::getDbo();
$db->setQuery(
'SELECT profile_key, profile_value FROM #__user_profiles' .
' WHERE user_id = '.(int) JFactory::getUser()->id." AND profile_key LIKE 'profile.%'" .
' ORDER BY ordering'
);
$results = $db->loadRowList();
$profile = array();
foreach ($results as $v)
{
$k = str_replace('profile.', '', $v[0]);
$profile[$k] = json_decode($v[1], true);
}
//print_r ($profile);
echo $profile[phone];
?>

*

Fedor Vlasenko

  • Профи
  • ********
  • 3800
  • 698
  • Все начинается с Value
JFactory::getUser()->id это  ид залогиненного пользователя здесь. Можете заменить нужным вам ид, смотрите в админке
для гостей 0
соответственно запрос ничего не выведет

*

max_1985

  • Завсегдатай
  • *****
  • 598
  • 55
В профиле пользователя компонента Kunena сделал такой вывод:
Код
<li><?php 
defined( '_JEXEC' ) or die;
jimport( 'joomla.user.helper' );
$userprofile = JUserHelper::getProfile();
echo "<strong>Город: </strong>".$userprofile->profile[city];
echo "<br/>";
?></li>
<li><?php
echo "<strong>Телефон: </strong>".$userprofile->profile[phone];
?></li>
Во всех профилях, которые я просматриваю отображается мой Город и Телефон. Как сделать чтоб отображались данные того пользователя к которому захожу?

*

voland

  • Профи
  • ********
  • 9378
  • 421
  • СКАЙП утерян! Пишите в телеграм @volandku
В профиле пользователя компонента Kunena сделал такой вывод:
Код
<li><?php 
defined( '_JEXEC' ) or die;
jimport( 'joomla.user.helper' );
$userprofile = JUserHelper::getProfile();
echo "<strong>Город: </strong>".$userprofile->profile[city];
echo "<br/>";
?></li>
<li><?php
echo "<strong>Телефон: </strong>".$userprofile->profile[phone];
?></li>
Во всех профилях, которые я просматриваю отображается мой Город и Телефон. Как сделать чтоб отображались данные того пользователя к которому захожу?
Профиль Kunena и профиль движка - совсем разные вещи

*

max_1985

  • Завсегдатай
  • *****
  • 598
  • 55
Профиль Kunena и профиль движка - совсем разные вещи
Знаю, просто хочу здесь выводить дополнительную информацию. Тут просто надо сделать привязку по ID пользователя, но не пойму как.

*

voland

  • Профи
  • ********
  • 9378
  • 421
  • СКАЙП утерян! Пишите в телеграм @volandku
Знаю, просто хочу здесь выводить дополнительную информацию. Тут просто надо сделать привязку по ID пользователя, но не пойму как.
А где именно здесь?

*

max_1985

  • Завсегдатай
  • *****
  • 598
  • 55
А где именно здесь?
В профиле Kunena. Уже догадался. Спасибо что отозвались! Сделал так:
Код
$userprofile = JUserHelper::getProfile($this->user->id);