Как настроить 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');
Надеюсь, это поможет вам.