Come passare Joomla parametri di un iframe (wrapper) pagina?

Cerco di riprendermi la mia utenti informazioni utilizzando il getUser() funzione con uno script php situato in un iframe (wrapper) di Joomla. Sembra che ci sia un problema di passaggio di parametri per codice iframe. L’unico modo che posso prendere informazioni relative all’utente è quello di inserire il codice in un articolo base (che non è un iframe).

Il var_dump($utente); output mostra :

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) }

Qualche idea di cosa è andato storto ?
Grazie,
Florent

<?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);
?>  
Vedo che il problema riguardano l’iframe (o ‘wrapper’) di contenuti. Il codice funziona normalmente quando si trova all’interno di un normale articolo (io uso sourcerer). C’è qualche impostazione necessaria per esterni iframe per funziona correttamente ?
Dopo alcune ricerche ho capito che ho bisogno di aggiungere il seguente nel mio iframe $mainframe =&JFactory::getApplication (il’sito’); $mainframe->inizializza();

OriginaleL’autore | 2012-02-13

2 risposte

  1. 0

    Come detto in precedenza, wchen si utilizza un wrapper di Joomla ambiente è sconosciuto. Quindi è necessario incorporare questo prima di utilizzare Joomla API. Per fare questo, basta copiare e incollare questo codice (o creare un nuovo file PHP, da inserire nella tua pagina personalizzata) :

    <?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();
    ?>

    OriginaleL’autore Arnaud

  2. 0

    Naturalmente, la pagina che contiene l’iframe non “conoscere” Joomla – è un ambiente diverso!

    Se ho capito bene cosa stai cercando di raggiungere, quindi si dovrebbe davvero creare un articolo in Joomla che consente di visualizzare le informazioni relative all’utente, ma invece di ottenere l’id utente da:

    $user = JFactory::getUser();

    si dovrebbe inviare POST/GET parametro da pagina ESTERNA (è possibile aggiungere un qualche tipo di auth-stringa, se la sicurezza è importante per voi). L’articolo verrà letto questo POST/GET parametro e visualizza le informazioni sull’utente, rispettivamente.

    Pagina ESTERNA (quella che contiene l’iframe) deve aggiornare l’iframe e utilizzare, come url, lo stesso url che visualizza l’articolo (assicurarsi che è “pubblico” autorizzazioni), ma anche di inviare l’id utente come parametro, per esempio:

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

    speranza che aiuta!

    Grazie alfasin. Mi hanno detto che l’iframe è anche la homepage ed è probabilmente meglio per inizializzare Joomla environnement, come Arnaud proporre.

    OriginaleL’autore alfasin

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *