Magento Tag Url重写并生成

时间:2011-11-30 03:39:40

标签: magento

我在Magento中为标签添加了许多重写规则。例如,

Request Path: tag/abc
Target Path: tag/product/list/tagId/7/
Type: Custom

请求和响应中的一切都很顺利。但我想知道如何更改前面的标记URL?尽管重写规则运行完美,但它不会更改已重写的URL。

我在标记模块中找到了getTaggedProductsUrl()方法,并且最终像其他方法一样,在core / url模型中调用getUrl()方法。我试图将'_use_rewrite' => true添加到路线参数中。但它没有生成正确的URL。

我真的很想知道这有什么不对!

1 个答案:

答案 0 :(得分:2)

如果您重写tag/tag模型并使用以下内容覆盖getTaggedProductsUrl(),它将起作用:

public function getTaggedProductsUrl()
{
    $fullTargetPath = Mage::getUrl('tag/product/list', array(
        'tagId' => $this->getTagId(),
        '_nosid' => true
    ));
    $targetPath = substr($fullTargetPath, strlen(Mage::getBaseUrl()));
    $rewriteUrl = Mage::getModel('core/url_rewrite')->loadByIdPath($targetPath);
    if ($rewriteUrl->getId()) {
        return $rewriteUrl->getRequestPath();
    }
    return $fullTargetPath;
}

假设您使用没有基本网址的目标路径作为“ID路径”“目标路径”属性,例如tag/product/list/tagId/30/
如果您不想复制该设置,则需要使用标记资源模型并手动调整SQL以匹配target_path列而不是id_path,因为资源模型未来使用预定义的方法。
您仍然可以使用Mage_Tag_Model_Resource_Tag::loadByRequestPath()方法作为参考。