我有一个CMS页面,我将使用以下更新的XML代码显示产品:
<reference name="content">
<block type="catalog/product_list" name="product_list" template="catalog/product/wholesale-list.phtml">
<action method="setCategoryId"><category_id>191</category_id></action>
<action method="setToolbarBlockName"><name>product_list_toolbar</name></action>
</block>
</reference>
我已经尝试获取我在布局中设置的ID,但没有这样的运气。我试过了:
$_category = Mage::registry(‘current_category’);
$currentCategoryId= $_category->getId();
和
$layer = Mage::getSingleton(‘catalog/layer’);
$_category = $layer->getCurrentCategory();
$currentCategoryId= $_category->getId();
但这些方法都不起作用。有谁知道我怎么能得到这个ID?
答案 0 :(得分:39)
我认为这是最好的方式;)
Mage::registry('current_category')->getId();
答案 1 :(得分:4)
没有试过这个,但也许是这样的:
$this->getLayout()->getBlock('product_list')->getCategoryId()
这样,您可以直接获取在XML中的Block对象上设置的变量。
干杯,
JD
答案 2 :(得分:3)
尝试以下代码
Mage::getModel('catalog/layer')->getCurrentCategory()->getId();
答案 3 :(得分:1)
您是否考虑过更新目录页面的布局而不是制作CMS页面?我想在某些情况下您可能更喜欢CMS页面,但是您可以非常轻松地更新类别的布局,就像在Magento中一样简单,这并不是那么容易:)
登录管理员后端,转到目录 - &gt;管理类别,然后选择所需的类别,然后单击自定义设计选项卡。请注意“自定义布局更新”字段。您可以在此处进行布局更新。
因此,对于此类别,如果您不想显示特定的块,则可以执行类似
的操作<reference name="right">
<remove name="right.permanent.callout" />
</reference>
这将从布局中删除名为right.permanent.callout的块。如果您只想更改产品列表以使用特定的phtml文件,您可以执行类似...
的操作<reference name="product_list">
<action method="setTemplate"><template>catalog/product/wholesale.phtml</template></action>
</reference>
您可以使用谷歌查找有关如何布局的更多信息。
答案 4 :(得分:1)
这对我有用:
$layer = Mage::getSingleton('catalog/layer');
$_category = $layer->getCurrentCategory();
$currentCategoryId= $_category->getId();
答案 5 :(得分:0)
这对我有用:
$currentCat = $this->getLayout()->getBlock('category.products')->getCurrentCategory();
然后您将当前类别作为对象,您可以通过以下方式获取ID:
$currentCat->getId();