Magento 如何去掉分类URL中的父目录

来源:互联网 发布:c语言标准库函数有多少 编辑:程序博客网 时间:2024/05/29 08:47

问题:

       目前使用的是Magento1.4.2,现希望把Magento中所有产品分类的父类URL去掉。

       如该分类名:http://www.abc.com/style/aaa.html  需要修改成  http://www.abc.com/aaa.html

解决方法:

      为了不破坏源码,需要在Local中写一个小小的插件

     1.在Local目录下创建Mage/Catalog/Model的目录结构

     2.将app/code/core/Mage/Catalog/Model/URL.php 复制到Local/Mage/Catalog/Model/中,并做如下处理即可。

  public function generatePath($type = 'target', $product = null, $category = null, $parentPath = null)    {        if (!$product && !$category) {            Mage::throwException(Mage::helper('core')->__('Please specify either a category or a product, or both.'));        }        // generate id_path        if ('id' === $type) {            if (!$product) {                return 'category/' . $category->getId();            }            if ($category && $category->getLevel() > 1) {                return 'product/' . $product->getId() . '/' . $category->getId();            }            return 'product/' . $product->getId();        }        // generate request_path        if ('request' === $type) {            // for category            if (!$product) {                if ($category->getUrlKey() == '') {                    $urlKey = $this->getCategoryModel()->formatUrlKey($category->getName());                }                else {                    $urlKey = $this->getCategoryModel()->formatUrlKey($category->getUrlKey());                }                $categoryUrlSuffix = $this->getCategoryUrlSuffix($category->getStoreId());//              注释以下语句//                 if (null === $parentPath) {//                     $parentPath = $this->getResource()->getCategoryParentPath($category);//                 }//                 elseif ($parentPath == '/') {//                     $parentPath = '';//                 }                $parentPath = '';  //新增加语句;                $parentPath = Mage::helper('catalog/category')->getCategoryUrlPath($parentPath, true, $category->getStoreId());                return $this->getUnusedPath($category->getStoreId(), $parentPath . $urlKey . $categoryUrlSuffix,                    $this->generatePath('id', null, $category)                );            }            // for product & category            if (!$category) {                Mage::throwException(Mage::helper('core')->__('A category object is required for determining the product request path.')); // why?            }            if ($product->getUrlKey() == '') {                $urlKey = $this->getProductModel()->formatUrlKey($product->getName());            }            else {                $urlKey = $this->getProductModel()->formatUrlKey($product->getUrlKey());            }            $productUrlSuffix  = $this->getProductUrlSuffix($category->getStoreId());            if ($category->getLevel() > 1) {                $this->_addCategoryUrlPath($category); // To ensure, that category has url path either from attribute or generated now                $categoryUrl = Mage::helper('catalog/category')->getCategoryUrlPath($category->getUrlPath(), false, $category->getStoreId());                return $this->getUnusedPath($category->getStoreId(), $categoryUrl . '/' . $urlKey . $productUrlSuffix,                    $this->generatePath('id', $product, $category)                );            }            // for product only            return $this->getUnusedPath($category->getStoreId(), $urlKey . $productUrlSuffix,                $this->generatePath('id', $product)            );        }        // generate target_path        if (!$product) {            return 'catalog/category/view/id/' . $category->getId();        }        if ($category && $category->getLevel() > 1) {            return 'catalog/product/view/id/' . $product->getId() . '/category/' . $category->getId();        }        return 'catalog/product/view/id/' . $product->getId();    }

      3.重新生成一下目录URL的索引



原创粉丝点击