2012-07-30 15 views
8

我正在使用Magento 1.5.0.1和getProductUrl()函数在产品页面的交叉销售和销售块中使用不同的URL格式。Magento getProductUrl()没有返回正确的URL(随机?)

无论是正确的网址,如: /laptop-bag.html 或者错误的一个(以及它的工作原理,但当然它不是重写URL): /目录/产品/视图/ ID/825/S/laptop/bag/category/16/

有时,交叉销售和上涨销售块都会返回正确的网址,有时两个网站都使用较长的版本,并且在某些情况下,一个使用正确的版本,另一个使用长版版本? ?

任何想法为什么会发生这种情况?

我已经运行了magento数据库修复,重新编制索引,并刷新/刷新了所有缓存。

回答

13

尝试的$product->getUrlPath()代替$product->getProductUrl()

UPDATE:按照下面的评论通过@ jordan314,Magento的建议EE客户:

的url_path属性不再使用的1.13,但仍可以向后兼容性,而且Magento不会为新产品分配一个值,因此不建议继续使用它。也许你可以尝试使用$ product-> getProductUrl()来代替。

+0

谢谢!我可以看到现在发生了什么,实际上,当您查看某个类别的产品并且相关/加售产品不在同一类别中时,会发生这种情况。通过使用urlpath,它从根获得它。奇迹般有效! – cappuccino 2012-07-31 05:51:37

+0

感谢Kalpesh,有同样的问题,大量挖掘并发现!辉煌!! – 2013-08-10 14:35:49

+0

@AdamLesniak很高兴帮助:) – Kalpesh 2013-08-11 21:58:27

3

生成的URL不正确,因为它无法找到重写的URL。 也许这是由于store_id不正确而引起的。 如:

$id = 290; 
Mage::app()->setCurrentStore('default'); 
echo "store_id: ".Mage::app()->getStore()->getId()."<br>"; 
$url = Mage::helper('catalog/product')->getProductUrl($id); 
echo $url."<br>"; 

//change store id 
Mage::app()->setCurrentStore('admin'); 
echo "store_id: ".Mage::app()->getStore()->getId()."<br>"; 
$url = Mage::helper('catalog/product')->getProductUrl($id); 
echo $url."<br>"; 

结果:

store_id: 1 
http://local.com/surestep-pro-diabetic-test-strips-50-strips-professional-care.html 
store_id: 0 
https://local.com/index.php/catalog/product/view/id/290/s/surestep-pro-diabetic-test-strips-50-strips-professional-care/ 

正确的URL重写可以在表命名core_url_rewrite(包括有关STORE_ID的信息)

发现如果在core_url_rewrite找到匹配值,它会生成'正确的网址',否则它会链接product_id + url键+ category_id

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

尝试添加此当你得到你的收藏

$collection->addUrlRewrite(); 

它帮助我。

+0

这也适用于我 – 2016-04-07 12:58:34

2
$id = 10; 
Mage::app()->setCurrentStore('admin'); 
$url = Mage::helper('catalog/product')->getProductUrl($id); 
+0

您的答案当然值得一点解释。 [包括解释](http://meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers)确实有助于提高你的文章的质量。 – 2016-09-16 12:02:51