を使用しようとしていますaddHandle()
が、次を使用するとエラーが発生します。
public function HandleMe($observer)
$update = $observer->getEvent()->getLayout()->getUpdate();
$update->addHandle('handlename');
「致命的なエラー: メンバー関数の呼び出し」が発生しgetUpdate()
ます
を使用しようとしていますaddHandle()
が、次を使用するとエラーが発生します。
public function HandleMe($observer)
$update = $observer->getEvent()->getLayout()->getUpdate();
$update->addHandle('handlename');
「致命的なエラー: メンバー関数の呼び出し」が発生しgetUpdate()
ます
次のアプローチを使用してみてください:
まず、これを yourcustommodule の config.xml に追加します。
<config>
<frontend>
<events>
<controller_action_layout_load_before>
<observers>
<yourcustomtheme_observer>
<class>yourcustomtheme/observer</class>
<method>addHandles</method>
</yourcustomtheme_observer>
</observers>
</controller_action_layout_load_before>
</events>
</frontend>
</config>
そして、次のメソッドをオブザーバーに追加します
class YourPackage_YourCustomTheme_Model_Observer extends CLS_Core_Model_Abstract
{
public function addHandles($observer) {
$category = Mage::registry('current_category');
if ($category instanceof Mage_Catalog_Model_Category) {
$update = Mage::getSingleton('core/layout')->getUpdate();
$fertilility = (count($category->getChildrenCategories()->getData())) ? 'parent' : 'nochildren';
$update->addHandle('catalog_category_' . $fertilility);
}
return $this;
}
}
PS : これは参考用です。オブザーバーとハンドルを正しく使用しているかどうかを確認できます。