Форум русской поддержки Joomla!® CMS
04.12.2016, 18:22:19 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
   
   Начало   Поиск Joomla 3.0 FAQ Joomla 2.5 FAQ Joomla 1.5 FAQ Правила форума Новости Joomla Реклама Войти Регистрация Помощь  
Страниц: [1]   Вниз
  Добавить закладку  |  Печать  
Автор

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

 (Прочитано 4399 раз)
0 Пользователей и 1 Гость смотрят эту тему.
nOObMeister
Осваиваюсь на форуме
***

Репутация: +6/-0
Offline Offline

Сообщений: 129


хД)))


« : 24.05.2012, 01:14:37 »

Нужно отобразить информацию о пользователе, скажем телефон или любую другую инфу, в каком-то другом месте внутри профиля пользователя.

Поковырялся в файлах 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
Профи
********

Репутация: +696/-5
Offline Offline

Пол: Мужской
Сообщений: 3820


Все начинается с Value


« Ответ #1 : 24.05.2012, 01:32:32 »

Код
<?php print_r (JFactory::getUser()); ?>
затем анализируя данные выводим
Код
<? 
$myuser = JFactory::getUser();
echo $myuser->name;
echo $myuser->username;
echo $myuser->email;
// и т .д исходя из ранее выведенной информацией print_r
?>
Записан
nOObMeister
Осваиваюсь на форуме
***

Репутация: +6/-0
Offline Offline

Сообщений: 129


хД)))


« Ответ #2 : 24.05.2012, 11:35:05 »

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
Профи
********

Репутация: +696/-5
Offline Offline

Пол: Мужской
Сообщений: 3820


Все начинается с Value


« Ответ #3 : 24.05.2012, 12:04:52 »

Когда распечатывается <?php print_r (JFactory::getUser()); ?> nOObMeister данные есть ваши здесь?
Записан
nOObMeister
Осваиваюсь на форуме
***

Репутация: +6/-0
Offline Offline

Сообщений: 129


хД)))


« Ответ #4 : 24.05.2012, 12:56:05 »

Всмысле мои данные?

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

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

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

Репутация: +696/-5
Offline Offline

Пол: Мужской
Сообщений: 3820


Все начинается с Value


« Ответ #5 : 24.05.2012, 13:57:41 »

Код
<?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
Осваиваюсь на форуме
***

Репутация: +6/-0
Offline Offline

Сообщений: 129


хД)))


« Ответ #6 : 24.05.2012, 17:30:10 »

Спасибо большое, завтра попробую!

К сожалению сегодня нет времени проверять.
Записан
shibaevvv
Осваиваюсь на форуме
***

Репутация: +3/-0
Offline Offline

Пол: Мужской
Сообщений: 60



« Ответ #7 : 24.05.2012, 22:14:55 »

делал так:

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

Репутация: +6/-0
Offline Offline

Сообщений: 129


хД)))


« Ответ #8 : 27.05.2012, 19:04:53 »

Печалька, не сработал ни один из способов..

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

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

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

Репутация: +0/-0
Offline Offline

Сообщений: 3


« Ответ #9 : 15.07.2012, 19:28:56 »

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

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

Заранее спасибо.
Записан
SWoz
Осваиваюсь на форуме
***

Репутация: +0/-1
Offline Offline

Сообщений: 63


« Ответ #10 : 25.07.2012, 14:48:16 »

Как отобразить данные из профиля пользователя, прямо в шаблоне?

*/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
Новичок
*

Репутация: +0/-0
Offline Offline

Сообщений: 7


« Ответ #11 : 29.05.2014, 14:53:51 »

Подскажите пожалуйста, почему  телефон видят только пользователи вошедшие на сайт, а для всех он не отображается?
Код:
<?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
Профи
********

Репутация: +696/-5
Offline Offline

Пол: Мужской
Сообщений: 3820


Все начинается с Value


« Ответ #12 : 29.05.2014, 16:02:21 »

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

Репутация: +55/-0
Offline Offline

Сообщений: 598



« Ответ #13 : 15.11.2016, 13:55:19 »

В профиле пользователя компонента 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
Профи
********

Репутация: +487/-86
Online Online

Пол: Мужской
Сообщений: 8696


любит наш народ всякое гавно...


« Ответ #14 : 15.11.2016, 16:54:15 »

В профиле пользователя компонента 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
Завсегдатай
*****

Репутация: +55/-0
Offline Offline

Сообщений: 598



« Ответ #15 : 15.11.2016, 17:33:46 »

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

Репутация: +487/-86
Online Online

Пол: Мужской
Сообщений: 8696


любит наш народ всякое гавно...


« Ответ #16 : 15.11.2016, 17:42:57 »

Знаю, просто хочу здесь выводить дополнительную информацию. Тут просто надо сделать привязку по ID пользователя, но не пойму как.
А где именно здесь?
Записан
max_1985
Завсегдатай
*****

Репутация: +55/-0
Offline Offline

Сообщений: 598



« Ответ #17 : 15.11.2016, 17:47:42 »

А где именно здесь?
В профиле Kunena. Уже догадался. Спасибо что отозвались! Сделал так:
Код:
$userprofile = JUserHelper::getProfile($this->user->id);
Записан
Страниц: [1]   Вверх
  Добавить закладку  |  Печать  
 
Перейти в:  

Powered by SMF 1.1.21 | SMF © 2006, Simple Machines

Joomlaforum.ru is not affiliated with or endorsed by the Joomla! Project or Open Source Matters.
The Joomla! name and logo is used under a limited license granted by Open Source Matters
the trademark holder in the United States and other countries.

LiveInternet