我需要将不包含产品的网页重定向到包含产品的第一个子类别网址(如果存在子类别)
由于我只有在类别不包含产品时才需要这样做,我无法通过.htaccess
进行此操作有没有人对如何在Magento实现这一点有任何想法? 我通过谷歌找不到太多运气。
答案 0 :(得分:0)
Haven没检查过。你应该把它放在你的view.phtml中。
$currentCategory = Mage::getModel('catalog/layer')->getCurrentCategory()->getId();
$productCheck = Mage::getModel('catalog/category')->load($currentCategory)
->getProductCollection();
if (count($productCheck) < 1) {
echo '<script type="text/javascript">
window.location = "' . Mage::getUrl('somewhere') . '"
</script>';
}
答案 1 :(得分:0)
您可以使用观察者。您可以编辑/创建本地目录模块并尝试:
1)在config.xml上定义观察者:
<?xml version="1.0"?>
<config>
<!--(...)-->
<global>
<!--(...)-->
<events>
<catalog_controller_category_init_after>
<observers>
<yourcompany_catalog>
<type>singleton</type>
<class>yourcompany_catalog/observer</class>
<method>categoryRedirect</method>
</yourcompany_catalog>
</observers>
</catalog_controller_category_init_after>
</events>
<!--(...)-->
</global>
<!--(...)-->
</config>
2)你的观察者方法可以是这样的:
<?php
class GraspingMagento_SocialShare_Model_Observer
{
/**
* @param Varien_Event_Observer $observer
* @return void
*/
public function categoryRedirect(Varien_Event_Observer $observer)
{
/** @var Mage_Catalog_Model_Category $category */
$category = $observer->getData('category');
if ($category->getProductCollection()->count() > 0) {
// Category has products, no need to redirect
return;
}
/** @var Mage_Catalog_Model_Resource_Category_Collection $childrenCategories */
$childrenCategories = $category->getChildrenCategories();
/** @var Mage_Catalog_CategoryController $controller */
$controller = $observer->getControllerAction();
foreach ($childrenCategories as $childCategory) {
/** @var Mage_Catalog_Model_Category $childCategory */
if ($childCategory->getProductCollection()->count() > 0) {
$controller->getResponse()->setRedirect($childCategory->getData('request_path'));
break;
}
}
}
}
这将验证您当前的类别没有产品。如果没有,它将尝试找到包含产品的直接子项,并重定向到它。