Joomla.it Forum
Joomla! 2.5 (versione con supporto terminato) => Joomla! 1.6/1.7/2.5 => : FreuxBang 18 Feb 2013, 11:45:59
-
Salve, come posso richiamare la variabile "$user=& JFactory::getUser()" in una normalissima pagina php ? Ovviamente se scrivo questa variabile in una pagina interna di joomla, che sia un articolo o un modulo, funziona tutto bene, ma se provassi a scriverla su una pagina php , cosa dovrei scrivere?.Grazie
-
non so se può essere d'aiuto
http://www.joomla.it/articoli-della-community/5208-recupero-dati-utente-da-sessione-joomla.html (http://www.joomla.it/articoli-della-community/5208-recupero-dati-utente-da-sessione-joomla.html)
-
Ad esempio: voglio stampare il proprio id.
$user = &JFactory::getUser();
$user_id = $user->get('id');
echo $user_id ;
Questo codice funziona all'interno delle pagine di joomla ma non funziona se lo applico su una nuda pagina php. Cosa devo introdurre nel codice, per poter applicare la funzione jFactory anche sulla pagina PHP?
-
cosa intendi per "normalissima pagina php"?
-
Nel mio sito in joomla tengo all'interno una cartella che contiene a sua volta una pagina in php
In questa pagina ho bisogno di far visualizzare l'id del proprio account.
www.miosito.it/nuovacartella/pagina.php
-
mi hai reso curioso e così ho provato! ;D
andando per una deduzione logica ho copiato dall'index.php (il primo file richiamato da J!) la parte della definizione delle variabili e l'inclusione del framework.
successivamente ho aggiunto il pezzo di codice che a te serve (ricavare l'id dell'account)
questo è il mio file
test.php
<?php
/**
* Test per inclusione Framework Joomla! in script esterni
* Risposta al topic su forum.joomla.it
*
* http://forum.joomla.it/index.php/topic,186020.0.html
*
* @author Dario Skyline81 Formicola
* @date 2013-02-18
* @version 0.1
*
*/
// Set flag that this is a parent file.
define('_JEXEC', 1);
define('DS', DIRECTORY_SEPARATOR);
if (file_exists(dirname(__FILE__) . '/defines.php')) {
include_once dirname(__FILE__) . '/defines.php';
}
if (!defined('_JDEFINES')) {
define('JPATH_BASE', dirname(__FILE__));
require_once JPATH_BASE.'/includes/defines.php';
}
require_once JPATH_BASE.'/includes/framework.php';
$user = &JFactory::getUser();
echo $user->id;
?>
l'ho testato e sembra funzionare... ovviamente è solo una base ;)
EDIT
____
il file test.php l'ho inserito nella directory root... se tu lo inserisci in un altro percorso occhio ai path per le inclusioni
-
Grazie, avevo anch'io provato a fare cosi, ma la pagina mi andava in errore, quindi si vede che i riferimenti sono sbagliati.
Devo capire come devo modificare il codice dato che il file in php si trova qui:
www.miosito.it/cartella1/cartella2/index.php (http://www.miosito.it/cartella1/cartella2/index.php)
-
Ho risolto modificando la riga
da cosi:
define('JPATH_BASE', dirname(__FILE__));
a cosi:
define('JPATH_BASE', '../../');
Grazie
-
Come valore mi da sempre 0.
Anche quando mi loggo
come mai?
-
Ci sono riuscito, per farlo funzionare ho dovuto scrivere il codice in questa maniera:
define( '_JEXEC', 1 );
define( 'DS', DIRECTORY_SEPARATOR );
define('JPATH_BASE', '../../' );
require_once ( JPATH_BASE .DS.'includes'.DS.'defines.php' );
require_once ( JPATH_BASE .DS.'includes'.DS.'framework.php' );
$mainframe =& JFactory::getApplication('site');
$mainframe->initialise();
$session =& JFactory::getSession();
$user = $session->get( 'user' );
echo $user->id;
[size=78%]Mentre quello che mi avevi consigliato, mi faceva spuntare soltanto uno 0, anche quando l'utente è loggato.[/size]
[size=78%]Grazie[/size]