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

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

Подключение Joomla 3 API к внешнему файлу и вывод в нем блога категории

 (Прочитано 290 раз)
0 Пользователей и 1 Гость смотрят эту тему.
trevolta
Новичок
*

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

Сообщений: 7


« : 28.03.2016, 12:40:08 »

Доброго времени суток.
Попросили меня тут знакомые прикрутить к сайту новости. Сайт написан на коленочке с нуля без использования каких либо CMS. Учитывая то, что они в будущем будут переводить сайт на Joomla, решил прикрутить им Joomla в отдельную папку внутри сайта и от туда выводить новости уже из базы. В будущем будет проще апгрейдить сайт, ведь новости будут уже в базе Joomla. В общем, создал я папку _joomla, залил в нее CMS, а в корне сайта создал файлик тестовый с кодом:
Код
<?php
define( '_JEXEC', 1 );
if ( file_exists( __DIR__ . '/defines.php' ) ) {
   include_once __DIR__ . '/defines.php';
}
if ( !defined( '_JDEFINES' ) ) {
   define( 'JPATH_BASE', __DIR__ . '/_joomla/' );
   require_once JPATH_BASE . '/includes/defines.php';
}
require_once JPATH_BASE . '/includes/framework.php';
 
$db = JFactory::getDbo();
$query = $db->getQuery( true )->select( '*' )->from( '#__content' )->where('catid = 9');
$list = $db->setQuery( $query )->loadObjectList();
print_r( $list );
?>
С базы все подчерпывается на ура, но тут представил все трудности с ручным разбором всего этого добра и с созданием навигации и загрустилось мне.

В связи с этим хотелось бы спросить сообщество: Есть ли способ как можно вывести модуль новостей Joomla в отдельном файлике используя например стандартный модуль Joomla для вывода блога?

Была идея стырить исходники с файлика "\components\com_content\views\category\tmpl\blog.php" но не знаю как правильно его прикрутить, чтобы не выдавал ошибки (как инициализировать $this и тд).

Есть идеи?  Cry
Записан
zomby6888
Живу я здесь
******

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

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


« Ответ #1 : 28.03.2016, 14:36:04 »

модуль можно вывести программно:

Код
$module = JModuleHelper::getModule('mod_modulname');
echo JModuleHelper::renderModule($module);
 
Записан
trevolta
Новичок
*

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

Сообщений: 7


« Ответ #2 : 28.03.2016, 15:53:29 »

Joomla в таком случае меня бранными словами обзывает.
Код:
Error displaying the error page: Application Instantiation Error
Я, наверное, что то недоподключил?
Записан
zomby6888
Живу я здесь
******

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

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


« Ответ #3 : 28.03.2016, 17:06:05 »

Цитировать
Я, наверное, что то недоподключил?

Приложение нужно запустить наверное:

Код
JFactory::getApplication()->initialise()
 

или
 
Код
$app = JFactory::getApplication('site');
$app->loadDispatcher();
 

для последних версий
Записан
trevolta
Новичок
*

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

Сообщений: 7


« Ответ #4 : 28.03.2016, 17:59:53 »

Код
JFactory::getApplication()->initialise();
 
Выдает:
Error displaying the error page: Application Instantiation Error

А код:
Код
$app = JFactory::getApplication('site');
$app->loadDispatcher();
 

Выдает пустоту (joomla 3.2.0). Но пустота меня радует, пустота не всегда ошибка. Может я модуль неправильно вывожу?
Код
$module = JModuleHelper::getModule('mod_articles_news');
echo JModuleHelper::renderModule($module);
Записан
trevolta
Новичок
*

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

Сообщений: 7


« Ответ #5 : 28.03.2016, 18:07:40 »

Код
<?php
define( '_JEXEC', 1 );
if ( file_exists( __DIR__ . '/defines.php' ) ) {
   include_once __DIR__ . '/defines.php';
}
if ( !defined( '_JDEFINES' ) ) {
   define( 'JPATH_BASE', __DIR__ . '/_joomla' );
   require_once JPATH_BASE . '/includes/defines.php';
}
require_once JPATH_BASE . '/includes/framework.php';
 
 
$app = JFactory::getApplication('site');
$app->loadDispatcher();
 
$module = JModuleHelper::getModule('mod_articles_news');
echo JModuleHelper::renderModule($module);
?>

Вот как код выглядит сейчас. Но выдает девственно чистую страничку.
Записан
zomby6888
Живу я здесь
******

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

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


« Ответ #6 : 28.03.2016, 19:17:55 »

У меня вот так работает:
Код
...
$app = JFactory::getApplication('site');
$app->loadLanguage();
$app->loadDispatcher();
 
$module = JModuleHelper::getModule('mod_articles_news');
echo JModuleHelper::renderModule($module);
 

И в админке выберете уровень отображения ошибок простой или выше.
Записан
trevolta
Новичок
*

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

Сообщений: 7


« Ответ #7 : 28.03.2016, 19:27:59 »

У меня вот так работает:
Спасибо, добрый человек, ты спас меня. Для тех, кто пришел сюда за ответом, финальный код выглядит так:
Код
<?php
define( '_JEXEC', 1 );
if ( file_exists( __DIR__ . '/defines.php' ) ) {
   include_once __DIR__ . '/defines.php';
}
if ( !defined( '_JDEFINES' ) ) {
   define( 'JPATH_BASE', __DIR__ . '/_joomla' ); //Путь к папке Joomla относительно корня сайта. У меня лежала в папке "_joomla" на сервере (не в корне сайта!)
   require_once JPATH_BASE . '/includes/defines.php';
}
require_once JPATH_BASE . '/includes/framework.php';
 
$app = JFactory::getApplication('site');
$app->loadLanguage();
$app->loadDispatcher();
 
$module = JModuleHelper::getModule('mod_articles_news'); //Выводим нужный модуль
echo JModuleHelper::renderModule($module);
?>
Записан
Филипп Сорокин
Живу я здесь
******

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

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


« Ответ #8 : 28.03.2016, 19:34:41 »

Цитировать
joomla 3.2.0

Цитировать
ВАЖНОЕ ОБНОВЛЕНИЕ JOOMLA:
Владельцам сайтов на Joomla 1.5.x, 2.5.x, 3.x следует обновить CMS.
Записан
trevolta
Новичок
*

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

Сообщений: 7


« Ответ #9 : 28.03.2016, 19:37:36 »

Версия php хостинга не позволяет обновиться. Да и после всех манипуляций я закрою доступ к самой Joomla и буду пользовать только ее API в сторонних php файлах.
Записан
Страниц: [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