Правильное использование языковых констант из .ini файлов будем осуществлять с помощью стандартной библиотеки MooTools, которая подгрузить нужный нам объект JText для клиентской части, куда в дальнейшем передадим массив с константами.

Как выше уже я упомянул про объект JText, данный объект используется как в серверной части так и в клиентской, отличие использования только на разных языках, в API Joomla - это будет статический класс JText::_('CONSTANT'), в клиентской части сайта - это будет Joomla.JText.strings.CONSTANT.

Начну объяснять на примере модуля (скачать можно в конце статьи), точнее с файла точки входа:

mod_testjslang.php :

  1. <?php
  2. /**
  3.  *
  4.  * @package     Joomla.Site
  5.  * @subpackage  mod_testjslang
  6.  *
  7.  * @copyright   Copyright (C) 2016 Korotkov Vadim http://siterybinsk.ru All rights reserved.
  8.  * @license     GNU General Public License version 2 or later; see LICENSE.txt
  9.  */
  10.  
  11. defined('_JEXEC') or die;
  12.  
  13. // Include helper
  14. require_once __DIR__ . '/helper.php';
  15.  
  16. // framework include
  17. JHtml::_('behavior.framework',true);
  18.  
  19. // load media files
  20. ModtTestjslangHelper::LoadMedia();
  21.  
  22. $moduleclass_sfx = htmlspecialchars($params->get('moduleclass_sfx'), ENT_COMPAT, 'UTF-8');
  23. require JModuleHelper::getLayoutPath('mod_testjslang', $params->get('layout', 'default'));

Особое внимание стоит уделить строке 17, а именно методу:

JHtml::_('behavior.framework',true);

который подгрузит js фреймворк и позволит работать с объектом Joomla.JText.

Далее осуществляем извлечение констант из .ini файла, более детально можно увидеть на примере ниже.

helper.php :

  1. <?php
  2. /**
  3.  *
  4.  * @package     Joomla.Site
  5.  * @subpackage  mod_testjslang
  6.  *
  7.  * @copyright   Copyright (C) 2016 Korotkov Vadim http://siterybinsk.ru All rights reserved.
  8.  * @license     GNU General Public License version 2 or later; see LICENSE.txt
  9.  */
  10.  
  11. defined('_JEXEC') or die;
  12.  
  13. /**
  14.  * Helper for mod_testjslang
  15.  *
  16.  * @package     Joomla.Site
  17.  * @subpackage  mod_testjslang
  18.  * @since       1.5
  19.  */
  20. class ModtTestjslangHelper
  21. {
  22.    
  23.     /**
  24.      *
  25.      * Load media for page
  26.      *
  27.      */
  28.     public static function LoadMedia() {
  29.        
  30.         // initialize with options
  31.         $script = array("window.addEvent('domready',function(){");
  32.             $script[]="Joomla.JText.load('".self::_getLanguage()."');";
  33.         $script[]='});';
  34.        
  35.         $script[]='function modtestjslang(num){';
  36.             $script[]='switch(num){';
  37.                 $script[]='case 1: alert(Joomla.JText.strings.MOD_TESTJSLANG_JS_ONE); break;';
  38.                 $script[]='case 2: alert(Joomla.JText.strings.MOD_TESTJSLANG_JS_TWO); break;';
  39.                 $script[]='case 3: alert(Joomla.JText.strings.MOD_TESTJSLANG_JS_THREE); break;';
  40.                 $script[]='case 4: alert(Joomla.JText.strings.MOD_TESTJSLANG_JS_END); break;';
  41.                 $script[]='default: break;';
  42.             $script[]='}';
  43.         $script[]='};';
  44.        
  45.         JFactory::getDocument()->addScriptDeclaration(implode("\n",$script));
  46.        
  47.     }
  48.    
  49.     /**
  50.      * Language
  51.      *
  52.      * @return  array
  53.      */
  54.     private static function _getLanguage() {
  55.        
  56.         // uses string to ini file
  57.         $strings = array(
  58.             'ONE',
  59.             'TWO',
  60.             'THREE',
  61.             'END'
  62.         );
  63.        
  64.         // array data lang    
  65.         $output = array();
  66.        
  67.         foreach ($strings as $string) {
  68.             $output[] = JText::script('MOD_TESTJSLANG_JS_'.$string);
  69.         }
  70.        
  71.         // return array data lang
  72.         return json_encode($output);
  73.     }
  74.  
  75. }

Из основных моментов стоит отметить, инициализацию метода Joomla.JText.load() на 32 строке.

И применение объекта в строке 68, где мы собираем константы, используя статический метод

JText::script('MOD_TESTJSLANG_JS_'.$string);

Собственно рассказывать и показывать больше нечего. Надеюсь пример оказался вполне наглядным и не составит труда для восприятия.


zipМодуль (демо) - применение констант на клиенте с Joomla (размер: 4.69 kb, скачиваний: 15)
Разработка плагинов и сайтов Joomla