2011-11-30 78 views
3

我在Magento中添加了很多标签的重写规则。例如,Magento Tag Url重写和生成

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

在请求和响应中一切正常。但我想知道如何更改前面的标记网址?虽然重写规则完美运行,但它不会更改已被重写的URL。

我在标记模块中发现了getTaggedProductsUrl()方法,并最终像其他人一样,在核心/网址模型中调用getUrl()方法。我试图将'_use_rewrite' => true添加到路由参数中。但它不会生成正确的URL。

我真的很想知道这是怎么回事!

回答

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; 
} 

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