[Решено] Подключение фреймворка Joomla в стороннем скрипте и доступ к БД

  • 9 Ответов
  • 8224 Просмотров

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

*

Mick_20

  • *****
  • 657
  • [+]3 / [-]0
  • Кручу мучу... заработать хочу.
Подключил в материале файл со ссылками:
require_once('адрес к файлу');

Все работает. Джумловские фишки все тоже работают.

Но когда перехожу по ссылке в др файл, то фишки джумловские не работают.
Где мне надо чего дописать чтоб заработали?
« Последнее редактирование: 07.06.2014, 10:45:04 от b2z »

*

b2z

  • *****
  • 7449
  • [+]740 / [-]0
  • Разраблю понемногу
Подключение фреймворка Joomla в стороннем файле:

Код: php
<?php
    /* Initialize Joomla framework */
    if (!defined('_JEXEC')) {
        define( '_JEXEC', 1 );
        define('JPATH_BASE', dirname(__FILE__) );
        define( 'DS', DIRECTORY_SEPARATOR );
        /* Required Files */
        require_once ( JPATH_BASE .DS.'includes'.DS.'defines.php' );
        require_once ( JPATH_BASE .DS.'includes'.DS.'framework.php' );
        /* To use Joomla's Database Class */
        require_once ( JPATH_BASE .DS.'libraries'.DS.'joomla'.DS.'factory.php' );
        require_once ( JPATH_LIBRARIES.DS.'joomla'.DS.'import.php'); // Joomla library imports.
        /* Create the Application */
        $app = JFactory::getApplication('site')->initialise();
    }
?>

Это случай, когда сторонний файл находится в корне. Если же он там не находится, то необходимо внести изменение в:
Код: php
define( 'JPATH_BASE', dirname(__FILE__));

*

Mick_20

  • *****
  • 657
  • [+]3 / [-]0
  • Кручу мучу... заработать хочу.
то что нужно. спасибо +
« Последнее редактирование: 29.10.2012, 18:51:47 от smart »

Добрый день!
У меня есть сторонний php-скрипт, лежит в корне Joomla, запускается кронтабом с хостинга. Хочу подключить класс джумловского плагина, чтобы использовать пару функций из него.
Мне для этого надо ведь фреймворк джумловский подключить, правильно?
Но вот вариант выше не работает. Просто подключение класса через include/require тоже ничего не дает. Joomla 2.5
Подскажите, пожалуйста, как правильно такие подключения делаются?

*

Arkadiy

  • *****
  • 5342
  • [+]440 / [-]0
  • Крепитесь, други.
Вариант выше работает. Проверяйте что вы делаете не так.

Закомментив эту строчку, скрипт начал отрабатывать:
Код
require_once ( JPATH_LIBRARIES.DS.'joomla'.DS.'import.php');

Похоже проблема в константе JPATH_LIBRARIES

А, ну так конечно, import.php находится не в папке libraries/joomla, а в libraries
Всем спасибо.
« Последнее редактирование: 06.06.2014, 19:07:16 от mcreature »

*

b2z

  • *****
  • 7449
  • [+]740 / [-]0
  • Разраблю понемногу
На самом деле эти строки лишние:
Код: php
/* To use Joomla's Database Class */
require_once ( JPATH_BASE .DS.'libraries'.DS.'joomla'.DS.'factory.php' );
require_once ( JPATH_LIBRARIES.DS.'joomla'.DS.'import.php'); // Joomla library imports.

Вполне достаточно framework.php, а в нем уже подключаются все нужные файлы:

Код: php
define('_JEXEC', 1);
define('JPATH_BASE', dirname(__FILE__));
define('DS', DIRECTORY_SEPARATOR);

/* Required files */
require_once JPATH_BASE . DS . 'includes' . DS . 'defines.php';
require_once JPATH_BASE . DS . 'includes' . DS . 'framework.php';

/* Create the Application */
$app = JFactory::getApplication('site')->initialise();

b2z, спасибо.

Но вот цель всего этого была в подключении класса из собственного плагина.
Но после:
Код
require_once ( JPATH_BASE .DS.'plugins'.DS.'system'.DS.'expimport'.DS.'expimport.php' );
JLoader::getClassList() показывает, что моего класса в списке нет.

Возможно вообще подключить класс из плагина?

зы: наврал я выше, в этом проекте у меня Joomla 3. Это может что-то менять?
« Последнее редактирование: 06.06.2014, 19:35:58 от mcreature »

*

Arkadiy

  • *****
  • 5342
  • [+]440 / [-]0
  • Крепитесь, други.
Код: php
$dispatcher	= JDispatcher::getInstance();
JPluginHelper::importPlugin('user');
$results = $dispatcher->trigger('onContentPrepareData', array('com_admin.profile', $data));
Объявляете диспетчер, импортируете плагины необходимой вам группы или конкретно ваш плагин (второй аргумент с названием плагина надо добавить в importPlugin), запускаете триггер с названием нужной вам функции, передаете ей нужные аргументы.

Arkadiy, да, совсем про это забыл. Спасибо, теперь все работает!