我使用的是设计更新XML,它适用于特定类别下的所有产品。当从这些类别浏览到这些产品时,更新将成功应用于这些产品,但当从搜索结果中打开这些产品时,更新将不会成功。如何使设计更新在从搜索结果中打开时影响这些产品?
发布于 2013-01-04 07:59:02
您需要添加一个布局句柄,您可以为这些产品中的每一个“抓取”,并通过布局xml文件修改布局。
这个过程的关键在于Mage_Catalog_Helper_Product_View的initProductLayout方法。此方法是根据产品型号添加自定义布局手柄的位置。您可以从控制器获取布局更新对象,并使用字符串对其调用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()并遍历集合以获取所需内容。如果您只想直接包含产品所属的类别if (而不是包含父级更高的类别),则可能还需要使用$product->getAvailableinCategories()。
https://stackoverflow.com/questions/14144603
复制相似问题