記事の上書きで連絡先の連絡先情報を表示する必要があります(住所、電話番号...)。
:$user = JFactory::getUser();
でユーザーを取得できますが、ユーザーの連絡先の詳細を取得するにはどうすればよいですか?
私はこれを使ってみました:
JTable::addIncludePath(JPATH_ADMINISTRATOR . '/components/com_contact/tables');
$contact = JTable::getInstance('contact_details');
echo '<pre>'; print_r($contact); echo '</pre>';
ただし、何も出力されません。
まず、次のようにユーザーIDを取得する必要があります。
$id = JFactory::getUser()->id;
次に、プロファイルデータの配列を次のように取得します。
$profile = JUserHelper::getProfile($id)->profile;
これで、任意のデータにアクセスできます。
echo $profile['address1'];
echo $profile['address2'];
echo $profile['city'];
echo $profile['region'];
echo $profile['country'];
echo $profile['postal_code'];
echo $profile['phone'];
echo $profile['website'];
echo $profile['favoritebook'];
echo $profile['aboutme'];
echo $profile['dob'];
ログインしていることを確認する必要があります。そうしないと、情報を取得できません。
健全性チェック付きの完全なコードは次のとおりです。
$user = JFactory::getUser();
if (!$user->guest)
{
$profile = JUserHelper::getProfile($user->id)->profile;
echo $profile['address1'];
echo $profile['address2'];
echo $profile['city'];
echo $profile['region'];
echo $profile['country'];
echo $profile['postal_code'];
echo $profile['phone'];
echo $profile['website'];
echo $profile['favoritebook'];
echo $profile['aboutme'];
echo $profile['dob'];
}
$user = JFactory::getUser();
$db = JFactory::getDbo();
$query = $db->getQuery(true);
$query->select('*')->from('#__contact_details')->where('user_id = '.(int)$user->id);
$db->setQuery($query);
$contacts = $db->loadObjectList();
/* one user can be associated with multiple contacts */
if($contacts) {
/* do stuff with the contact records */
}