Magento类路径改变

时间:2013-11-27 13:17:39

标签: php magento categories

有人可以帮我解决以下问题:

我想更改类别的网址。

现在如下http://tuinbeursnederland.nl.testbyte.nl/blokhutten-tuinhuizen/blokhutten/op-maat/

我想这样:http://tuinbeursnederland.nl.testbyte.nl/blokhutten/op-maat/

但类别/ blokhutten-tuinhuizen /必须保留。

有人有任何想法吗?

2 个答案:

答案 0 :(得分:0)

您可以使用网址重写来实现此目的。

转到url重写并添加自定义网址重写,提供唯一的ID路径。

在请求路径中提供http://tuinbeursnederland.nl.testbyte.nl/blokhutten-tuinhuizen/blokhutten/op-maat/此网址,并在目标路径中为此网址http://tuinbeursnederland.nl.testbyte.nl/blokhutten/op-maat/ magento内部考虑其使用的目标路径。

有关网址重写的更多信息,请参阅此处http://www.magentocommerce.com/wiki/modules_reference/english/mage_adminhtml/urlrewrite/index

http://blog.beetleweb.com/2012/10/creating-custom-magento-url-rewrites/

答案 1 :(得分:0)

class CP_Core_Model_Catalogurl extends Mage_Catalog_Model_Url
{
    /**
     * Retrieve Category URL
     *
     * @param array $params
     * @return string
     */
   public function getCategoryRequestPath($category, $parentPath)
    {
        $storeId = $category->getStoreId();
        $idPath  = $this->generatePath('id', null, $category);
        $suffix  = $this->getCategoryUrlSuffix($storeId);

        if (isset($this->_rewrites[$idPath])) {
            $this->_rewrite = $this->_rewrites[$idPath];
            $existingRequestPath = $this->_rewrites[$idPath]->getRequestPath();
        }

        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 = Mage::helper('catalog/category')->getCategoryUrlPath($parentPath,
                                                                           true, $category->getStoreId());
        $parentPath = '';

        $requestPath = $parentPath . $urlKey . $categoryUrlSuffix;
        if (isset($existingRequestPath) && $existingRequestPath == $requestPath . $suffix) {
            return $existingRequestPath;
        }

        if ($this->_deleteOldTargetPath($requestPath, $idPath, $storeId)) {
            return $requestPath;
        }

        return $this->getUnusedPath($category->getStoreId(), $requestPath,
                                    $this->generatePath('id', null, $category)
        );
    }


}

请覆盖模块自定义此功能,就像我上面那样。