2011-12-17 51 views
8

Tôi có view (frontend) trong thành phần của riêng tôi (view.html.php):Cách hiển thị chế độ xem không có mẫu?

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

Và mẫu:

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

Làm thế nào để hiển thị nó mà không joomla template (phần đầu, phong cách, v.v.) Tôi muốn gọi đây là một phần của phương pháp onclick jquery trong cửa sổ.

Trả lời

21

Để hiển thị thành phần, chỉ thêm thông số "tmpl = component" vào url. Nếu cần hiển thị nội dung nào đó bên cạnh chế độ xem của thành phần, nó có thể được tùy chỉnh - tạo tệp "component.php" trong thư mục gốc của mẫu và bao gồm bất kỳ thứ gì bạn cần. Các mẫu khác có thể được thực hiện theo cách tương tự - tạo "some_template.php" trong thư mục gốc của mẫu và thêm tham số "tmpl = some_template" vào url.

+0

Cảm ơn bạn! Avesome! – Nips

+0

Không thể tin rằng "_creating" component.php "tập tin trong thư mục gốc của template_" nó không bao giờ xảy ra với tôi. – Ejaz

4

Bắt đầu chỉnh sửa

OK để các công trình bên dưới, nhưng tôi đã tìm thấy một cách tốt hơn. Trong điều khiển của bạn làm ...

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); 
} 

End Sửa

Bạn có thể đặt 'tmpl' thành 'thành phần', theo đề nghị của Babur Usenakunov, trong trường hợp kịch bản và css có thể được nạp, giống như .. .

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

Tuy nhiên, nếu bạn muốn tạo ra liệu bạn có thể thêm & format = sống hoặc trong thành phần của bạn làm cho một cái nhìn kiểu 'thô' ...

Thật không may cách duy nhất chức năng tôi có thể tìm thấy để làm cho một viewType của render thô một cách chính xác là để gọi exit() sau khi lớp xem cuộc gọi cha mẹ :: display() ...

trong controller.php của bạn ...

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(); 
    } 

} 

sau đó trong views/bất cứ điều gì/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 
    } 
} 
Các vấn đề liên quan