web-dev-qa-db-fra.com

Comment utiliser JFactory :: getLanguage () depuis un autre répertoire?

Comment obtenir la langue actuellement sélectionnée à l'aide de la fonction JFactory::getLanguage(); d'un autre répertoire?

Je sais le faire quand j'y suis:

  • / web/include
  • / web <---- [peut l'appeler à partir d'ici] ( résolu ici )

mais je dois l'appeler de ...

  • /web/scripts/myScripts/myScript.php

J'ai essayé d'importer Joomla Framework:

// 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';

// Instantiate the application.
$app = JFactory::getApplication('site');

// Initialise the application.
$app->initialise();

$lang =& JFactory::getLanguage()->getTag();
3
user3433065

La définition de JPATH_BASE est toujours absent de votre code. Pour importer l'API Joomla, vous pouvez simplement utiliser les éléments suivants:

define( '_JEXEC', 1 );
define( 'JPATH_BASE', realpath(dirname(__FILE__).'/..' ));

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

$app = JFactory::getApplication('site');
$app->initialise();

Ensuite, pour obtenir l'étiquette de langue:

$lang = JFactory::getLanguage();
$tag  = $lang->getTag();

Vous devez vous assurer que JPATH_BASE a été défini correctement. Je ne sais pas exactement où se trouve votre fichier PHP) par rapport à votre installation de Joomla, mais vous devrez modifier la ligne 2 du code d'importation de l'API.

J'espère que cela t'aides

0
Lodder