Magento Ajax - Как получить только часть тела?

Я пытаюсь использовать вызов ajax с Magento. Когда я называю страницу блока через Ajax, я получаю весь HTML включая голову, css, JavaScript и тело. Как я получаю только часть тела?

15
задан Moon 19 January 2010 в 00:16
поделиться

1 ответ

Если вы можете предоставить немного больше информации о том, какую «Page Block» вы звоните, может быть проще различимой проблемой. По умолчанию Magento включает в себя метку <по умолчанию> для всех страниц, которые дадут вам заголовки страниц, даже на вызовах AJAX.

Чтобы отправить страницу без всего этого дополнительного, у вас есть несколько вариантов. Во-первых, вы можете просто настроить вывод вручную, полностью избегая системы макета. Magento делает это для функции One-Page Checkout:

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

Вы также можете изменить этот метод, чтобы использовать пользовательский обработчик макета, такой как это:

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

и в вашем макете:

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

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

Второй вариант, если вы хотите использовать Макеты, состоит в том, чтобы определить альтернативную макет по умолчанию. Когда вы звоните $ this-> loadlayout (); в Magento Controllers вы можете на самом деле указать ручку, отличную от <по умолчанию> , чтобы спустить. Пример от контроллера продукта Magento будет:

$this->loadLayout('popup');

Этот макет определяется по умолчанию в файле макета Main.xml , и отображает шаблон Popup.phtml и может быть Подходит для вашего использования.

Если у вас все еще есть проблемы, дайте мне знать, и мы можем попробовать другие вещи. Надеюсь, это поможет.

Спасибо, Джо

32
ответ дан 1 December 2019 в 01:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: