Вызов и отображение компонента в другом компоненте Joomla
Потребовалось мне вывести в плагине вид и содержимое одного из компонентов. Решил думать как это сделать правильно - не дублировать код и соответственно вызвать непосредственно сам компонент.
У меня выводилась форма заявки тура, сделанная в виде отдельного компонента.
Сам для своих целей отталкивался от примера, котороый и привожу.
// Путь к компоненту users $com = JPATH_SITE.DS.'components'.DS.'com_users'; // Получить/настроить контроллер users if (!class_exists('UsersController')) require($com.DS.'controller.php'); $config['base_path'] = $com; $cont = new UsersController($config); // Получить представление и добавить правильный путь к шаблону $view =& $cont->getView('registration', 'html'); $view->addTemplatePath($com.DS.'views'.DS.'registration'.DS.'tmpl'); // Установить, какое представление отображать, и добавить соответствующие пути JRequest::setVar('view', 'registration'); JForm::addFormPath($com.DS.'models'.DS.'forms'); JForm::addFieldPath($com.DS.'models'.DS.'fields'); // Загрузить языковой файл $lang =& JFactory::getLanguage(); $lang->load('com_users', JPATH_SITE); // И, наконец, визуализировать вид! $cont->display();
Работает в joomla 3.1.5.
Вывод на странице содержимого другой страницы
Для начала надо создать подшаблон для вывода ajax контента, как описано тут: "Вызов шаблона component.php", далее берёте ссылку на ваш пункт меню, добавляете к ней параметр &tmpl=ajax, а так же остальные необходимые параметры и загружаете её с помощью функции file_get_contents. Примерно так:
echo file_get_contents(JURI::root()."content.html?tmpl=ajax&id=$id");