Magento getProductUrl()未返回正确的url(随机?)

Magento getProductUrl()未返回正确的url(随机?),magento,magento-1.5,Magento,Magento 1.5,我使用的是Magento 1.5.0.1,产品页面上交叉销售和追加销售块中使用的getProductUrl()函数提供了不同的URL格式 请选择正确的url,如: /laptop-bag.html 或者错误的一个(好吧,它可以工作,但当然不是重写URL): /目录/产品/视图/id/825/s/笔记本电脑包/类别/16/ 有时交叉销售和追加销售块都返回正确的URL,有时两者都使用较长的版本,在某些情况下,一个使用正确的,另一个使用较长的版本 知道为什么会这样吗 我已经运行了magento数据库修

我使用的是Magento 1.5.0.1,产品页面上交叉销售和追加销售块中使用的getProductUrl()函数提供了不同的URL格式

请选择正确的url,如: /laptop-bag.html 或者错误的一个(好吧,它可以工作,但当然不是重写URL): /目录/产品/视图/id/825/s/笔记本电脑包/类别/16/

有时交叉销售和追加销售块都返回正确的URL,有时两者都使用较长的版本,在某些情况下,一个使用正确的,另一个使用较长的版本

知道为什么会这样吗


我已经运行了magento数据库修复、重新索引和刷新/刷新所有缓存。

生成了错误的url,因为它找不到重写的url。 可能是因为商店标识不正确。 例如:

可以在名为core\u url\u rewrite的表中找到正确的url重写(包括有关存储\u id的信息)

如果在core\u url\u rewrite中找到匹配值,它将生成“正确的url”,否则它将包含产品id+url键+类别id

$routePath = 'catalog/product/view';
$routeParams['id']  = $product->getId();
$routeParams['s']   = $product->getUrlKey();
if ($categoryId) {
    $routeParams['category'] = $categoryId;
}

尝试
$product->getUrlPath()
而不是
$product->getProductUrl()

更新:根据@jordan314的以下评论,Magento向EE客户推荐:


url_path属性从1.13起不再使用,但仍可用于向后兼容,并且Magento不会为新产品分配值,因此不建议继续使用它。也许您可以尝试使用$product->getProductUrl()。

在获取收藏时尝试添加此选项

$collection->addUrlRewrite();

它帮助了我。

谢谢!我可以看到现在发生了什么,基本上,当您从一个类别中查看一个产品,并且相关/追加销售的产品不存在于同一个类别中时,就会发生这种情况。通过使用urlpath,它从根目录获取它。工作起来很有魅力!谢谢Kalpesh,也有同样的问题,经过大量的挖掘,终于发现了!太棒了@AdamLesniak很乐意帮忙:)我在用EE。根据Magento的支持,“url_path属性从1.13开始不再使用,但仍可用于向后兼容,Magento不会为新产品分配值,因此不建议继续使用它。也许您可以尝试改用$product->getProductUrl()。”因此我会使用$product->getProductUrl()再次代替$product->getUrlPath()。您的答案当然值得一点解释。确实有助于提高您的帖子质量。只需添加
Mage::app()->setCurrentStore('default')到我们方法的第一行(如建议的)已起作用,谢谢!:这起作用了。但需要添加$collection->load();在$collection->addUrlRewrite()之后;
$id = 10;
Mage::app()->setCurrentStore('admin');
$url = Mage::helper('catalog/product')->getProductUrl($id);
$collection->addUrlRewrite();
$id = 10;
Mage::app()->setCurrentStore('admin');
$url = Mage::helper('catalog/product')->getProductUrl($id);