我在Magento中为标签添加了许多重写规则。例如,
Request Path: tag/abc
Target Path: tag/product/list/tagId/7/
Type: Custom
请求和响应中的一切都很顺利。但我想知道如何更改前面的标记URL?尽管重写规则运行完美,但它不会更改已重写的URL。
我在标记模块中找到了getTaggedProductsUrl()
方法,并且最终像其他方法一样,在core / url模型中调用getUrl()
方法。我试图将'_use_rewrite' => true
添加到路线参数中。但它没有生成正确的URL。
我真的很想知道这有什么不对!
答案 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()
方法作为参考。