Magento: рендеринг пустой страницы при вызове шаблона из Ajax - PullRequest
3 голосов
/ 23 февраля 2011

Прежде всего, я должен извиниться за недостаток знаний по этому вопросу. Я все еще плохо знаком с Magento, и с информацией, с которой я столкнулся, я должен был быть в состоянии заставить это работать. Я начал с здесь . Я могу получить метод Ajax для вызова, но я получаю пустой 2column-left.phtml в качестве вывода (поэтому я вижу заголовок, левый столбец, пустой основной столбец и нижний колонтитул). Мои файлы настроены так:

app / local / MyModule / Featured / Block / Featured.php

<?php  
class MyModule_Featured_Block_Featured extends Mage_Core_Block_Template  
{  
    public function __construct()  
    {  
        $this->_controller = 'featured';  
        $this->_blockGroup = 'featured';  
        parent::__construct();  
    }  
}  
?>

app / local / MyModule / Featured / controllers / FeaturedController.php

<?php 
class MyModule_Featured_FeaturedController extends Mage_Core_Controller_Front_Action
{
    public function displayAction()
    {
        $this->loadLayout()->renderLayout();
    }
}
?> 

app / local / MyModule / Featured / etc / config.xml

<config>
    <modules>
        <MyModule_Featured>
            <version>0.1.0</version>
        </MyModule_Featured>
    </modules>
    <frontend>
        <routers>
            <featured>
                <use>standard</use>
                <args>
                    <module>MyModule_Featured</module>
                    <frontName>featured</frontName>
                </args>
            </featured>
        </routers>
    </frontend>
</config>

app / design / frontend / default / myLayout / layout / local.xml

<config>
    <featured_featured_display>
        <block type="module/block" name="root" output="toHtml" template="catalog/product/featured.phtml" />
    </featured_featured_display>
</config>

Код Ajax на главной странице, пользовательский phtml:

var url = "<?php echo $this->getUrl('featured/featured/display') ;?>";
jQuery(document).ready(function() {
    jQuery('#featured-products').load(url);
});

Ответы [ 2 ]

4 голосов
/ 23 февраля 2011

Я считаю, что корневой узел файла макета должен быть <layout>, а не <config>.

PS
Если вы хотите обойтись без jQuery - чтобы избежать раздувания - Magento уже имеет Прототип в стандартной комплектации и может делать то же самое.

var url = "<?php echo $this->getUrl('featured/featured/display') ?>";
document.observer('dom:loaded', function(){
    new Ajax.Updater('featured-products', url);
});

0 голосов
/ 23 февраля 2011

Загрузка макета обычно включает дескриптор по умолчанию, поэтому я предполагаю, что ваше назначение не имеет никакого эффекта, потому что уже загружена корневая заметка.Попробуйте сначала удалить корневой узел, а затем добавить его обратно в качестве единственного узла.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...