Как отобразить вид без шаблона? - PullRequest
9 голосов
/ 17 декабря 2011

У меня есть представление (внешний интерфейс) в моем собственном компоненте (view.html.php):

class MevViewMev extends JView{
        function display($tpl = null){
                parent::display($tpl);
        }
}

И шаблон:

<?php defined('_JEXEC') or die('Restricted access'); ?>
<div>
ASFADSFDSF
</div>

Как отобразить его без шаблона Joomla (заголовок раздела, стили и т. Д.). Я хочу вызвать эту часть метода jquery onclick в окне.

Ответы [ 2 ]

21 голосов
/ 17 декабря 2011

Чтобы отобразить компонент, добавьте в URL только параметр «tmpl = component».Если вам нужно отобразить что-то, кроме представления компонента, его можно настроить - создайте файл "component.php" в корневой папке шаблона и включите в него все, что вам нужно.Больше шаблонов можно сделать таким же образом - создайте «some_template.php» в корневой папке шаблона и добавьте параметр «tmpl = some_template» в URL.

4 голосов
/ 22 октября 2013

Начать редактировать

ОК, поэтому приведенное ниже работает, но я нашел лучший способ. В вашем контроллере сделать ...

if (JRequest::getVar('format') != 'raw') {
    $url = JURI::current() . '?' . $_SERVER['QUERY_STRING'] . '&format=raw';
    header('Location: ' . $url);
    // or, if you want Content-type of text/html just use ...
    // redirect($url);
}

Конец редактирования

Вы можете установить 'tmpl' в 'component', как это было предложено Бабуром Усенакуновым, и в этом случае скрипты и css могут быть загружены, как ...

JRequest::setVar('tmpl','component');

Однако, если вы хотите создать необработанный вывод, вы можете добавить & format = raw или в своем компоненте сделать вид типа «raw» ...

К сожалению, единственный функциональный способ найти правильный вид viewType для необработанного рендера - это вызвать exit () после того, как класс представления вызовет parent :: display () ...

В вашем controller.php ...

class com_whateverController() extends JController
{
    function __construct()
    {
        // the following is not required if you call exit() in your view class (see below) ...
        JRequest::setVar('format','raw');
        JFactory::$document = null;
        JFactory::getDocument();
        // or
        //JFactory::$document = JDocument::getInstance('raw');
        parent::__construct();
    }

    function display()
    {
        $view = $this->getView('whatever', 'raw');
        $view->display();
    }

}

затем в views / whats / view.raw.php ...

class com_whateverViewWhatever extends JView
{
    public function display($tpl = null)
    {
            parent::display();
            exit; // <- if you dont have this then the output is captured in and output buffer and then lost in the rendering
    }
}
...