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

nOObMeister

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

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

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

nOObMeister

  • Захожу иногда
  • 126
  • 6 / 0
  • хД)))
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

  • Живу я здесь
  • 3844
  • 727 / 7
  • Все начинается с Value
Когда распечатывается <?php print_r (JFactory::getUser()); ?> nOObMeister данные есть ваши здесь?
*

nOObMeister

  • Захожу иногда
  • 126
  • 6 / 0
  • хД)))
Всмысле мои данные?

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

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

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

Fedor Vlasenko

  • Живу я здесь
  • 3844
  • 727 / 7
  • Все начинается с 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

  • Захожу иногда
  • 126
  • 6 / 0
  • хД)))
Спасибо большое, завтра попробую!

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

shibaevvv

  • Захожу иногда
  • 60
  • 4 / 0
делал так:

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

nOObMeister

  • Захожу иногда
  • 126
  • 6 / 0
  • хД)))
Печалька, не сработал ни один из способов..

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

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

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

Chopivkiy

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

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

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

SWoz

  • Захожу иногда
  • 62
  • 0 / 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]
*

Fedor Vlasenko

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

max_1985

  • Давно я тут
  • 608
  • 56 / 0
В профиле пользователя компонента 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

  • Легенда
  • 10923
  • 581 / 111
  • Эта строка съедает место на вашем мониторе
В профиле пользователя компонента 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

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

voland

  • Легенда
  • 10923
  • 581 / 111
  • Эта строка съедает место на вашем мониторе
Знаю, просто хочу здесь выводить дополнительную информацию. Тут просто надо сделать привязку по ID пользователя, но не пойму как.
А где именно здесь?
*

max_1985

  • Давно я тут
  • 608
  • 56 / 0
А где именно здесь?
В профиле Kunena. Уже догадался. Спасибо что отозвались! Сделал так:
Код
$userprofile = JUserHelper::getProfile($this->user->id); 
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться