Magento:类别产品设计更新未应用于搜索结果产品

时间:2013-01-03 18:07:10

标签: magento magento-1.7

我正在使用适用于特定类别下的所有产品的设计更新XML。从这些类别浏览到这些产品时,更新会成功应用于这些产品,但不会在从搜索结果中打开这些产品时更新。从搜索结果打开时,如何使设计更新影响这些产品?

1 个答案:

答案 0 :(得分:1)

您需要添加一个布局句柄,您可以“抓取”这些产品中的每一个,并通过布局xml文件修改布局。

此过程的关键在于initProductLayout Mage_Catalog_Helper_Product_View方法。此方法是基于产品模型添加自定义布局句柄的位置。您可以从控制器中获取布局更新对象,并使用字符串调用addHandle()来添加该句柄。因此,您需要重写此方法并执行以下操作:

$update = $controller->getLayout()->getUpdate();
foreach ($product->getCategoryIds() as $categoryId) {
    $update->addHandle('PRODUCT_IN_CATEGORY_' . $categoryId);
}

现在,在布局xml文件中,您可以将<PRODUCT_IN_CATEGORY_##>句柄定位到您的类别ID,并且无论如何访问,您在此处放置的任何布局更新都将应用于产品视图页面

根据安装的具体情况,使用其他类别标识符(如名称或URL键)而不是数字ID来键入句柄可能更有意义。为此,使用$product->getCategoryCollection()并遍历集合以获取所需内容。如果您只想包含产品直接属于的类别ID(而不是包含较高父母类别的类别),您可能还想使用$product->getAvailableinCategories()