ライムや文字/数字などのランダムデータを表示するカスタムブロックを作成できました
ただし、これは Magento でブロックを作成する手順を理解するためのテストでした。
次に、そのブロックから切り替えようとし、別のブロックを作成しました。ここでは、関連製品を動的にすることが目的であるため、拡張する代わりMage_Core_Block_Template
に使用するように変更し、この新しいブロックを指定しました。Enterprise_TargetRule_Block_Catalog_Product_List_Related
cache.xml
これがいつ呼び出されるかを知るために、関連リストブロッククラスに配置しMage::log
ました。一度呼び出されてからキャッシュされることがわかります。
私の人生では、それを機能させることはできません。これは私のコードです。アドバイスしてください。
注: 書き換えには別の目的があり、実際に私のログ コード行はメソッドの下のこの部分に設定されています。public function getProductIds($object)
Lg/Hole/etc/config.xml
<config>
<modules>
<Lg_Hole>
<version>0.0.1</version>
</Lg_Hole>
</modules>
<global>
<blocks>
<lg_hole>
<class>Lg_Hole_Block</class>
</lg_hole>
</blocks>
<models>
<lg_hole>
<class>Lg_Hole_Model</class>
</lg_hole>
<enterprise_targetrule_resource>
<rewrite>
<index>Lg_Hole_Model_Mymodel</index>
</rewrite>
</enterprise_targetrule_resource>
</models>
</global>
</config>
Lg/Hole/etc/cache.xml
<config>
<placeholders>
<lg_hole>
<block>lg_hole/related</block>
<name>hole_view_example</name>
<placeholder>CACHE_TEST</placeholder>
<container>Lg_Hole_Model_Cachetest</container>
<cache_lifetime>86400</cache_lifetime>
</lg_hole>
</placeholders>
</config>
Lg/Hole/Model/Cachetest.php
class Lg_Hole_Model_Cachetest extends
Enterprise_PageCache_Model_Container_Abstract {
protected function _getCacheId()
{
return 'HOMEPAGE_PRODUCTS' . md5($this->_placeholder->getAttribute('cache_id'));
}
protected function _renderBlock()
{
$blockClass = $this->_placeholder->getAttribute('block');
$template = $this->_placeholder->getAttribute('template');
$block = new $blockClass;
$block->setTemplate($template);
return $block->toHtml();
}
protected function _saveCache($data, $id, $tags = array(), $lifetime = null) {
return false;
}
public function applyWithoutApp(&$content)
{
return false;
}
}
Lg/Hole/Block/Related.php
class Lg_Hole_Block_Related extends Enterprise_TargetRule_Block_Catalog_Product_List_Related
{
}