Как настроить lesti:FPC для работы с динамическими шаблонами?

Я хотел бы использовать lesti:FPC с модулем, который я разработал.

Чтобы включить SEO дружественные URL, ВСЕ запросы к модулю отправляются в действие index модуля, и там шаблон загружается динамически. Как я могу заставить lesti:FPC работать по этому сценарию?

В файле макета модуля (../layout/addon.xml) у меня есть:

<block type="addon/index" name="addon_index" template="addon/index.phtml"/>

По модулю indexAction у меня есть:

if($condition)
{
  $this->getLayout()->getBlock('addon_index')->setTemplate('addon/a.phtml');
}
else
{
  $this->getLayout()->getBlock('addon_index')->setTemplate('addon/b.phtml');
}

Было бы достаточно добавить addon_index к дескрипторам lesti:FPC для кэширования страниц моего модуля?

1 ответ

Calling Dynamic Block in Lesti Fpc depends on conditions can be done using observer 

**Config.xml**

<frontend>
        <events>
            <core_block_abstract_to_html_before>
                <observers>
                    <atwix_test>
                        <type>model</type>
                        <class>namspace_test/observer</class>
                        <method>insertBlock</method>
                    </atwix_test>
                </observers>
            </core_block_abstract_to_html_before>
        </events>
    </frontend>

class Namespace_Test_Model_Observer
{
    public function insertBlock($observer)
    {
        /** @var $_block Mage_Core_Block_Abstract */
        /*Get block instance*/
        $_block = $observer->getBlock();
        /*get Block type*/
        $_type = $_block->getType();
       /*Check block type*/
        if ($_type == 'catalog/product_price') {
            /*Clone block instance*/
            $_child = clone $_block;
            /*set another type for block*/
            $_child->setType('test/block');
            /*set child for block*/
            $_block->setChild('child', $_child);
            /*set our template*/
            $_block->setTemplate('at.phtml');
        }
    }
}

И, наконец, вот шаблон кода at.phtml:

echo $ this-> getChildHtml ('child');

Надеюсь, это поможет вам.

Другие вопросы по тегам