2010-01-19 12 views

Trả lời

31

Nếu bạn có thể cung cấp thêm một chút thông tin về "trang chặn" nào bạn đang gọi, có thể dễ dàng phân biệt vấn đề hơn. Theo mặc định, Magento bao gồm thẻ bố trí <default> cho tất cả các trang, thẻ này sẽ cung cấp cho bạn tiêu đề trang và chân trang ngay cả trên các cuộc gọi AJAX.

Để gửi một trang mà không cần thêm tất cả, bạn có một vài tùy chọn. Thứ nhất, bạn có thể đơn giản thiết lập đầu ra bằng tay của riêng bạn, tránh hoàn toàn hệ thống bố trí. Magento thực hiện điều này cho một trang kiểm tra tính năng:

$result = array('foo' => 'foo', 'bar' => 'bar',); 
$this->getResponse()->setBody(Zend_Json::encode($result)); 

Bạn cũng có thể thay đổi phương pháp này sử dụng một bộ xử lý bố trí tùy chỉnh như thế này:

protected function loadPage() { 
    $layout = $this->getLayout(); 
    $update = $layout->getUpdate(); 
    $update->load('your_custom_handle'); 
    $layout->generateXml(); 
    $layout->generateBlocks(); 
    $output = $layout->getOutput(); 

    $result = array('outputHtml' => $output, 'otherVar' => 'foo',); 
    $this->getResponse()->setBody(Zend_Json::encode($result));   
} 

Và trong file layout của bạn:

<your_custom_handle> 
    <remove name="right"/> 
    <remove name="left"/> 

    <block type="module/block" name="root" output="toHtml" template="module/template.phtml"/> 
</your_custom_handle> 

Tùy chọn thứ hai, nếu bạn muốn sử dụng bố cục, là xác định bố cục mặc định thay thế. Khi bạn gọi $this->loadLayout(); trong bộ điều khiển Magento, bạn thực sự có thể chỉ định một tay cầm khác với số <default> để hạ xuống. Một ví dụ từ bộ điều khiển sản phẩm Magento sẽ là:

$this->loadLayout('popup'); 

Bố cục này được xác định bởi mặc định trong file main.xml bố trí, và ám chỉ rằng popup.phtml mẫu, và có thể phù hợp để sử dụng.

Nếu bạn vẫn gặp sự cố, hãy cho tôi biết và chúng tôi có thể thử những thứ khác. Hy vọng rằng sẽ giúp.

Xin cảm ơn, Joe

+0

Cảm ơn bạn vì điều này. Đã cứu tôi một đống thời gian. – Travis

+0

Lưu ý rằng nếu bạn sao chép và dán ví dụ về tệp bố cục, hãy đảm bảo thay đổi 'type =" module/block "' thành kiểu khối magento thực, như 'type =" page/html "' hoặc một loại khối tùy chỉnh được xác định cho bạn module. – zlovelady

+0

rực rỡ, đơn giản, eficient ... Tôi thích nó. Cảm ơn Joe – OSdave

Các vấn đề liên quan