Форум русской поддержки Joomla!® CMS
28.06.2017, 23:19:26 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
   
   Начало   Поиск Joomla 3.0 FAQ Joomla 2.5 FAQ Joomla 1.5 FAQ Правила форума Новости Joomla Реклама Войти Регистрация Помощь  
Страниц: [1]   Вниз
  Добавить закладку  |  Печать  
Автор

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

 (Прочитано 7944 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Mick_20
Завсегдатай
*****

Репутация: +3/-0
Offline Offline

Пол: Мужской
Сообщений: 686


Кручу мучу... заработать хочу.


« : 25.10.2012, 08:38:38 »

Подключил в материале файл со ссылками:
require_once('адрес к файлу');

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

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

Репутация: +734/-0
Offline Offline

Пол: Мужской
Сообщений: 7725


Разраблю понемногу


« Ответ #1 : 25.10.2012, 10:00:31 »

Подключение фреймворка Joomla в стороннем файле:

Код
<?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();
   }
?>

Это случай, когда сторонний файл находится в корне. Если же он там не находится, то необходимо внести изменение в:
Код
define( 'JPATH_BASE', dirname(__FILE__));
« Последнее редактирование: 29.10.2012, 16:51:41 от smart » Записан
Mick_20
Завсегдатай
*****

Репутация: +3/-0
Offline Offline

Пол: Мужской
Сообщений: 686


Кручу мучу... заработать хочу.


« Ответ #2 : 29.10.2012, 08:26:05 »

то что нужно. спасибо +
« Последнее редактирование: 29.10.2012, 16:51:47 от smart » Записан
mcreature
Новичок
*

Репутация: +0/-0
Offline Offline

Сообщений: 9


« Ответ #3 : 05.06.2014, 20:46:39 »

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

Репутация: +439/-0
Online Online

Пол: Мужской
Сообщений: 5416


Крепитесь, други.


« Ответ #4 : 06.06.2014, 05:10:42 »

Вариант выше работает. Проверяйте что вы делаете не так.
Записан
mcreature
Новичок
*

Репутация: +0/-0
Offline Offline

Сообщений: 9


« Ответ #5 : 06.06.2014, 16:55:20 »

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

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

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

Репутация: +734/-0
Offline Offline

Пол: Мужской
Сообщений: 7725


Разраблю понемногу


« Ответ #6 : 06.06.2014, 17:19:40 »

На самом деле эти строки лишние:
Код
/* 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, а в нем уже подключаются все нужные файлы:

Код
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();
Записан
mcreature
Новичок
*

Репутация: +0/-0
Offline Offline

Сообщений: 9


« Ответ #7 : 06.06.2014, 17:29:42 »

b2z, спасибо.

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

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

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

Репутация: +439/-0
Online Online

Пол: Мужской
Сообщений: 5416


Крепитесь, други.


« Ответ #8 : 06.06.2014, 18:47:23 »

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

Репутация: +0/-0
Offline Offline

Сообщений: 9


« Ответ #9 : 06.06.2014, 19:49:43 »

Arkadiy, да, совсем про это забыл. Спасибо, теперь все работает!
Записан
Страниц: [1]   Вверх
  Добавить закладку  |  Печать  
 
Перейти в:  

Powered by SMF 1.1.21 | SMF © 2006, Simple Machines

Joomlaforum.ru is not affiliated with or endorsed by the Joomla! Project or Open Source Matters.
The Joomla! name and logo is used under a limited license granted by Open Source Matters
the trademark holder in the United States and other countries.

LiveInternet