Новости Joomla

0 Пользователей и 1 Гость просматривают эту тему.
  • 22 Ответов
  • 6425 Просмотров
*

b2z

  • Глобальный модератор
  • 7290
  • 778 / 0
  • Разраблю понемногу
Добрый вечер.

Столкнулся с интересной штукой. У меня есть отдельный Config класс, который я подключаю в точке входа компонента. Находится он в /com_mycomp/libraries/. В этом Config классе я пытаюсь использовать JText, но вместо перевода я получаю языковую константу. А если перед использованием JText сделать такой маневр:
Код: php
$lang = JFactory::getLanguage();
$lang->load('com_mycomp');
то все срабатывает и я получаю на выходе перевод.

Получается, что Joomla не грузит языковой файл, если я использую свой отдельный класс? Мне каждый раз нужно подгружать языковой файл?

*

ABTOP

  • Захожу иногда
  • 493
  • 33 / 4
Re: Не подключается языковой файл
« Ответ #1 : 21.04.2012, 04:37:40 »
А какая константа внутри этого JText? Если одна из стандартных от Joomla или уже загруженных других расширений, то должно отображаться. А если ваша собствення, то, вроде как да, надо задавать загрузку вашего языкового файла.

Мне так кажется.
*

b2z

  • Глобальный модератор
  • 7290
  • 778 / 0
  • Разраблю понемногу
Re: Не подключается языковой файл
« Ответ #2 : 22.04.2012, 11:56:16 »
А какая константа внутри этого JText? Если одна из стандартных от Joomla или уже загруженных других расширений, то должно отображаться. А если ваша собствення, то, вроде как да, надо задавать загрузку вашего языкового файла.

Мне так кажется.
Своя константа... Я просто покапал сторонние компоненты, вроде там не подгружают. А може плохо искал ^-^
*

b2z

  • Глобальный модератор
  • 7290
  • 778 / 0
  • Разраблю понемногу
Re: Не подключается языковой файл
« Ответ #3 : 23.04.2012, 17:35:07 »
В точке входа подключаю главный класс ES:
Код: php
require_once(JPATH_ROOT . DS . 'components' . DS . 'com_mycomp' . DS . 'libraries' . DS . 'base.php');

В base.php подключаю классы:
Код: php
require_once(JPATH_ROOT . DS . 'components' . DS . 'com_mycomp' . DS . 'defines.php');
require_once(JPATH_ROOT . DS . 'components' . DS . 'com_mycomp' . DS . 'libraries' . DS . 'config.php');

Соответственно в base.php у меня есть метод, для получения экземпляра объекта:
Код: php
/**
 * Return a reference to the config object. Singleton
 *
 * @param integer $game_id Game Id
 * @return object ESCfg
 */
public static function getConfig($gameId = 0)
{
return ESCfg::getInstance($gameId);
}

И в точке входа получаю объект конфига:
Код: php
$cfg = ES::getConfig();
*

NightGuard

  • Живу я здесь
  • 2927
  • 378 / 7
  • вжжж-вжжж
Re: Не подключается языковой файл
« Ответ #4 : 24.04.2012, 00:35:46 »
bzzik, есть один косяк, указывать на языковые файлы нужно в конфигурационном XML компонента/модуля/шаблона.
И с этим у меня был косяк, в шаблонах, если не указал что есть языковой файл, то потом в XML добавлять было бесполезно, двиг их не видел, хотя может просто баг...
Идеология сверхпотребления более опасна для человечества, чем идеология гитлеровского тоталитаризма
*

NightGuard

  • Живу я здесь
  • 2927
  • 378 / 7
  • вжжж-вжжж
Re: Не подключается языковой файл
« Ответ #5 : 24.04.2012, 01:03:48 »
Оппа, уточняю - в установочном, для модулей и шаблонов он же является конфигом.
Идеология сверхпотребления более опасна для человечества, чем идеология гитлеровского тоталитаризма
*

b2z

  • Глобальный модератор
  • 7290
  • 778 / 0
  • Разраблю понемногу
Re: Не подключается языковой файл
« Ответ #6 : 24.04.2012, 10:12:03 »
Да не, в XML у меня все есть и все работает в контроллерах, моделях и т.п. Именно в сторонних классах не работает.

как ни странно попробывал сделать в входном файле компонента
Код: php
include_once JPATH_COMPONENT_SITE . DS . 'test.php';
test::getString();

файл test.php:
Код: php
<?php
class test
{
public static function getString()
{
echo JText::_( 'COM_MYBLOG' );
}
}
все прекрасно работает..
языковой файл: language/ru-RU/ru-RU.com_myblog.ini
Хмм, интересно, почему у меня этого не происходит. Попробую ещё покапаться.

Интересно почему вы не юзаете сторонний стандартный функционал компонентов Joomla для создания конфигов?
А он позволяет тянуть данные из базы? Насколько я помню, он все хранит в XML или я ошибаюсь?  Плюс у меня подгрузка настроек идет в зависмости от переданного аргумента.

UPDATE:
Нашел ошибку... Блин, вот пока не спросишь у кого нибудь, так и не заметишь  crazy! Сколько раз смотрел и не видел, что она есть:

Код: php
if (!is_numeric($gameId)) {
JError::raiseError(500, 'COM_MYCOMP_ERROR_INCORRECT_GAME_ID');
return;
}
^-^
*

b2z

  • Глобальный модератор
  • 7290
  • 778 / 0
  • Разраблю понемногу
Re: Не подключается языковой файл
« Ответ #7 : 24.04.2012, 11:43:38 »
из базы позволит тянуть.. данные хранятся в JSON в компоненте..
получение $params = & JComponentHelper::getParams('com_myblog');
а дальше $params->get('myparam');
а вот на счет в зависимости от аргумента тут х.з. ибо не известно как у вас реализован класс настроек и какие параметры в зависимости от чего меняются! возможно можно и без костыля )
Ну params да, я почему-то про другое подумал. Но мне params не совсем удобно, так как cейчас я тяну из таблицы settings настройки в зависимости от переданного $gameId:

Код: php
/**
 * Loads configuration vars from DB.
 *
 * @param integer $gameId The game Id to use.
 * @return array An array of loaded configuration variables.
 */
private function _load($gameId)
{
$db = JFactory::getDbo();

$query = 'SELECT * FROM ' . $db->nameQuote('#__es_settings')
. ' WHERE ' . $db->nameQuote('game_id'). ' = ' . (int)$gameId;

$db->setQuery($query);
$vars = $db->loadObjectList();

return $vars;
}
*

b2z

  • Глобальный модератор
  • 7290
  • 778 / 0
  • Разраблю понемногу
Re: Не подключается языковой файл
« Ответ #8 : 24.04.2012, 12:07:55 »
ну тут да и кстати вы уверенны что это нельзя написать в модели?)
и кстати почему не пользуетесь новым типом создания запросов?
Код: php
private function _load($gameId)
{
$db = JFactory::getDbo();
$query = $db->getQuery(true);
$query->select('*')->from('#__es_settings')->where('game_id=' . (int)$gameId)
return $db->setQuery($query)->loadObjectList();
}
А зачем мне прикручивать модель? Это отдельный класс, которому не нужна логика разделения ;)

А старым типом я уже не пользуюсь, просто комопнент я начинал писать для Joomla 1.5 -  пока руки не дошли все переписать ^-^
Кстати мне больше по душе вот такой вариант написания:

Код: php
$db = JFactory::getDbo();
$query = $db->getQuery(true);

$query->select('*');
$query->from('#__es_settings');
$query->where('game_id=' . (int)$gameId);
$db->setQuery($query);

Наглядней и понятней. Но это уже дело вкуса, а о них не спорят  *DRINK*
*

b2z

  • Глобальный модератор
  • 7290
  • 778 / 0
  • Разраблю понемногу
Re: Не подключается языковой файл
« Ответ #9 : 24.04.2012, 12:48:24 »
Дык это же Singleton. Объект всегда один, откуда бы я его не получал. И доступ к объекту простой - $cfg = ES::getConfig();

Код: php
/**
 * Returns the Config object, only creating it if it
 * doesn't already exist.
 *
 * @param integer $gameId The game Id to use.
 * @return object ESCfg object.
 */
public static function getInstance($gameId = 0)
{
if (!is_numeric($gameId)) {
JError::raiseError(500, JText::_('COM_ESPORTS_ERROR_INCORRECT_GAME_ID'));
return;
}

if (empty(self::$instances[$gameId])) {
self::$instances[$gameId] = new ESCfg($gameId);
}

return self::$instances[$gameId];
}

Про кэширование пока не думал  ::)
*

b2z

  • Глобальный модератор
  • 7290
  • 778 / 0
  • Разраблю понемногу
Re: Не подключается языковой файл
« Ответ #10 : 24.04.2012, 12:59:09 »
Я юзаю его везде, где мне нужен доступ к этому объекту, в том числе и во входном файле ;)
А запрос будет выполнен только один раз, когда будет создан объект. Потом я просто получаю доступ к объекту, без его создания - классический Singleton. Таким же образом в Joomla реализованы многие классы, тот же JUser.
*

b2z

  • Глобальный модератор
  • 7290
  • 778 / 0
  • Разраблю понемногу
Re: Не подключается языковой файл
« Ответ #11 : 24.04.2012, 13:17:58 »
просто при каждой перезагрузке страницы будет все равно запрос лететь дополнительный в базу на выборку ) я это имел ввиду )
Ну фиг знает  ^-^
Я попробовал подампить этот объект в разных местах своего компонента и он всегда один, даже после перезагрузки страницы. Естественно для каждого "пользователя" он будет свой, но в пределах этого "пользователя" он не меняется.

game_id не уникальное поле в #__settings
*

b2z

  • Глобальный модератор
  • 7290
  • 778 / 0
  • Разраблю понемногу
Re: Не подключается языковой файл
« Ответ #12 : 24.04.2012, 13:24:31 »
ну естественно он будет один но факт остается фактом что он при каждой загрузке страницы бегает в базу )
тогда вопрос ещё такой: эти настройки зависят от юзера?
или где то в админке в виде для создания/редактиорвания игры есть для конкретной игры конкретные настройки?
Ну зачем ему бегать в базу, если объект один и тот же?

В админке для каждой игры есть свои настройки. Они не связаны с пользователями.
*

b2z

  • Глобальный модератор
  • 7290
  • 778 / 0
  • Разраблю понемногу
Re: Не подключается языковой файл
« Ответ #13 : 24.04.2012, 13:38:58 »
вы меня не поняли ) в пределах одного запуска везде будет конечно один объект но он сбегает сначала в базу (лишний запрос)!
при переходе на другую страницу/обновлении будет все равно инициализироваться этот объект ) поэтому надо кеширование что бы лишний раз не гонять запрос!
Ну в пределах запуска да, тут по другому никак. Но запрос будет только тогда, когда будет создан объект. При переходе на другую страницу/обновлении он не создается, поэтому лишнего запроса не будет, так как при получении экземпляра объекта проверяется его наличие.

и да а почему вы не реализовали настройки так как сделано у Joomla для каждого материала (где можно выставить кучу настроек) и все они хранятся в строке таблицы в формате JSON В текущей записи?)
В Joomla 1.5 не было JSON, может быть и подумаю насчет этого. Хотя мне на данный момент удобно тянуть таким образом, тем более это не решит проблему с запросами - все равно они будут  ^-^ Что так что так, выборку делать надо  ::)
*

b2z

  • Глобальный модератор
  • 7290
  • 778 / 0
  • Разраблю понемногу
Re: Не подключается языковой файл
« Ответ #14 : 24.04.2012, 14:04:32 »
frisian - видимо, Вы неверно поняли устройство моего компонента. У меня игра не существует как сущность. Никакого getItem нет, а также для неё нет ни контроллера, ни моделей... Тоже самое для конфига, он просто используется повсеместно в компоненте - он глобален.

Да возьмите тот же JComments или JomSocial для примера. Такая же реализация и у меня.
*

b2z

  • Глобальный модератор
  • 7290
  • 778 / 0
  • Разраблю понемногу
Re: Не подключается языковой файл
« Ответ #15 : 24.04.2012, 15:08:19 »
Это я понял. Просто у меня немного не такой подход. В табличке settings у меня хранятся не конфиги игр, а конфиг компонента в зависимости от игры. То есть там и общие настройки всего компонента (это когда $gameId = 0) и специфические настройки в зависимости от игры. И у меня нет необходимости получать доступ к данным самой игры, так как я их практически нигде не использую (в парочке мест в отрыве от конфига). Поэтому два запроса я не делаю ;)
*

saharin88

  • Захожу иногда
  • 291
  • 20 / 1
  • JoomWork
Re: Не подключается языковой файл
« Ответ #16 : 04.07.2014, 12:33:16 »
по сабжу:
чтоб подключалось в сторонних файлах нужно еще язык указать
Код
JFactory::getLanguage()->load('com_component', JPATH_ADMINISTRATOR, "ru-RU");
*

Aleks.Denezh

  • Живу я здесь
  • 3406
  • 428 / 4
Re: Не подключается языковой файл
« Ответ #17 : 04.07.2014, 17:57:45 »
по сабжу:
чтоб подключалось в сторонних файлах нужно еще язык указать
Код
JFactory::getLanguage()->load('com_component', JPATH_ADMINISTRATOR, "ru-RU");
Я буду всегда читать даты постов...Я буду всегда читать даты постов...Я буду всегда читать даты постов...
*

saharin88

  • Захожу иногда
  • 291
  • 20 / 1
  • JoomWork
Re: Не подключается языковой файл
« Ответ #18 : 04.07.2014, 18:27:50 »
Я буду всегда читать даты постов...Я буду всегда читать даты постов...Я буду всегда читать даты постов...
причем тут даты постов?!
я написал это для тех, кто тоже столкнулся с такой проблемой, потому что в теме ответа нет!
*

Aleks.Denezh

  • Живу я здесь
  • 3406
  • 428 / 4
Re: Не подключается языковой файл
« Ответ #19 : 04.07.2014, 21:24:08 »
причем тут даты постов?!
я написал это для тех, кто тоже столкнулся с такой проблемой, потому что в теме ответа нет!
я думаю что те кто столкнулся с данной проблемой решили её уже давным давно!
*

saharin88

  • Захожу иногда
  • 291
  • 20 / 1
  • JoomWork
Re: Не подключается языковой файл
« Ответ #20 : 07.07.2014, 12:23:03 »
я думаю что те кто столкнулся с данной проблемой решили её уже давным давно!
это для тех кто столкнется
*

kohav

  • Новичок
  • 1
  • 0 / 0
Re: Не подключается языковой файл
« Ответ #21 : 02.04.2017, 13:10:08 »
Всем добрый день!
Я специально зарегистрировалась, чтоб сказать большое человеческое спасибо saharin88!
Ну вот просто невероятно огромное!
Те, кто спрашивал в 2012 году, может и решили этот вопрос, но как-то очень тихо: я 4 дня с утра до ночи билась над тем, что мой плагин не подгружает русский язык, а сейчас просто добавила эту волшебную запись в ядро и не поверила своим глазам: он наконец-то увидел языковые константы!
В общем, еще раз огромное спасибо и не важно, какая дата поста, если ответа нет: 90% вопросов по разработке в Joomla так и остаются открытыми, этого я за последние 4 дня насмотрелась до тошноты....
Где б еще найти ответ на вопрос, который тоже меня страшенно мучает: почему курл запрос работает в отдельном файле и не работает в ядре плагина, даже в отдельной функции?
*

Septdir

  • Живу я здесь
  • 3370
  • 168 / 4
Re: Не подключается языковой файл
« Ответ #22 : 02.04.2017, 13:27:37 »
Всем добрый день!
Я специально зарегистрировалась, чтоб сказать большое человеческое спасибо saharin88!
Ну вот просто невероятно огромное!
Те, кто спрашивал в 2012 году, может и решили этот вопрос, но как-то очень тихо: я 4 дня с утра до ночи билась над тем, что мой плагин не подгружает русский язык, а сейчас просто добавила эту волшебную запись в ядро и не поверила своим глазам: он наконец-то увидел языковые константы!
В общем, еще раз огромное спасибо и не важно, какая дата поста, если ответа нет: 90% вопросов по разработке в Joomla так и остаются открытыми, этого я за последние 4 дня насмотрелась до тошноты....
Где б еще найти ответ на вопрос, который тоже меня страшенно мучает: почему курл запрос работает в отдельном файле и не работает в ядре плагина, даже в отдельной функции?
Не пугайте людей словом ядро. Ядро = движок.
Вопрос же стоит задать в отдельном топике. Не забудь приложить код плагина или плагин в упакованном виде. Ибо надо смотреть код и тестить. У меня cURL проблем не было, относительно недавно делал автопост в вк.
Не можете справиться с задачей сами пишите, решу ее за вас, не бесплатно*.
*Интересная задача, Деньги или Бартер. Натурой не беру!
CodersRank | Контакты | Мой GitHub | Workshop
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Получить данные из поля " file", и передать в файл обработчик

Автор Glog

Ответов: 5
Просмотров: 1322
Последний ответ 01.08.2017, 13:55:40
от Glog
Как правильно и безопасно вызывать файл из CMS не связанный с ней?

Автор voland

Ответов: 55
Просмотров: 1877
Последний ответ 03.11.2016, 18:04:31
от Aleks.Denezh
Подключить API Joomla в php файл

Автор MadChild

Ответов: 6
Просмотров: 2899
Последний ответ 16.07.2014, 15:46:14
от Aleks.Denezh
Как прикрепить файл к письму через форму input type="file"?

Автор DiEV

Ответов: 15
Просмотров: 9125
Последний ответ 09.06.2013, 10:02:10
от Aleks.Denezh
Зависимые селекты и ссылка на файл

Автор voffka-mc

Ответов: 0
Просмотров: 1294
Последний ответ 26.11.2012, 12:37:06
от voffka-mc