Как передать параметры Joomla на страницу iframe (оболочки)? - PullRequest
0 голосов
/ 14 февраля 2012

Я пытаюсь получить информацию о моих пользователях, используя функцию getUser () с помощью php-скрипта, расположенного в iframe (оболочке) Joomla.Кажется, есть проблема с передачей параметров в код iframe.Единственный способ получить информацию о пользователях - это вставить код в основную статью (которая не является iframe).

var_dump ($ user);вывод показывает:

object(JUser)#17 (23) { ["isRoot":protected]=> NULL ["id"]=> int(0) ["name"]=> NULL ["username"]=> NULL ["email"]=> NULL ["password"]=> NULL ["password_clear"]=> string(0) "" ["usertype"]=> NULL ["block"]=> NULL ["sendEmail"]=> int(0) ["registerDate"]=> NULL ["lastvisitDate"]=> NULL ["activation"]=> NULL ["params"]=> NULL ["groups"]=> array(0) { } ["guest"]=> int(1) ["_params":protected]=> object(JRegistry)#18 (1) { ["data":protected]=> object(stdClass)#19 (0) { } } ["_authGroups":protected]=> NULL ["_authLevels":protected]=> NULL ["_authActions":protected]=> NULL ["_errorMsg":protected]=> NULL ["_errors":protected]=> array(0) { } ["aid"]=> int(0) }

Какое-то представление о том, что идет не так?Спасибо, Флоран

<?php

define( '_JEXEC', 1 );
define('JPATH_BASE', dirname(__FILE__) );
define( 'DS', DIRECTORY_SEPARATOR );

require_once ( JPATH_BASE .DS.'includes'.DS.'defines.php' );
require_once ( JPATH_BASE .DS.'includes'.DS.'framework.php' );

$user = JFactory::getUser();

echo "<p>Your name is {$user->name}, your email is {$user->email}, and your username is $user->username}</p>";
echo "<p>Your usertype is {$user->usertype} which has a group id of {$user->gid}.</p>";
//var_dump($user);
?>  

Ответы [ 2 ]

0 голосов
/ 14 февраля 2012

Как уже говорилось, когда вы используете оболочку, среда Joomla неизвестна.Так что вам нужно внедрить это перед использованием Joomla API.Для этого просто скопируйте и вставьте этот код (или создайте новый PHP-файл и включите его в свою пользовательскую страницу):

<?php
define('_JEXEC', 1 );
define('JPATH_BASE', $_SERVER['DOCUMENT_ROOT'] ); 
define( 'DS','/' );

require_once ( JPATH_BASE.DS. 'includes'.DS.'defines.php' );
require_once ( JPATH_BASE.DS.'includes'.DS.'framework.php' );
require(JPATH_BASE.DS.'libraries/joomla/factory.php');

$mainframe =& JFactory::getApplication('site');
$mainframe->initialise();
?>
0 голосов
/ 14 февраля 2012

Конечно, страница, которая содержит iframe, не «знает» Joomla - это другая среда!

Если я правильно понял, чего вы пытаетесь достичь, тогда вам действительно следует создать статьюв Joomla, которая отображает информацию о пользователе, но вместо того, чтобы получать идентификатор пользователя из:

$user = JFactory::getUser();

, вы должны отправить его в качестве параметра POST / GET со страницы OUTER (вы можете добавить какую-нибудь строку авторизацииесли безопасность имеет значение для вас).Статья прочитает этот параметр POST / GET и отобразит информацию о пользователе соответственно.

Страница OUTER (та, которая содержит iframe) должна обновить iframe и использовать в качестве URL тот же URL, который отображаетarticle (убедитесь, что у него есть «публичные» разрешения), но также отправит идентификатор пользователя в качестве параметра, например:

iframe src="http://<url to joomla>?id=articleId&userId=<user-id>

надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...