cap*_*ino 11 magento magento-1.5
我正在使用Magento 1.5.0.1,并且产品页面上的交叉销售和向上销售块中使用的getProductUrl()函数会抛出不同的URL格式.
要么正确的网址如:/laptop-bag.html或错误的网址(它的确有效,但当然不是重写网址):/ catalog/product/view/id/825/s/laptop-bag/category/16 /
有时交叉销售和向上销售块都会返回正确的URL,有时两者都使用较长的版本,在某些情况下,一个使用正确的,另一个使用长版本?
任何想法为什么会这样?
我已经运行了magento数据库修复,重新编制索引,并刷新/刷新所有缓存.
Kal*_*esh 16
尝试$product->getUrlPath()而不是$product->getProductUrl()
更新:根据@ jordan314的以下评论,Magento向EE客户推荐:
url_path属性从1.13开始不再使用,但仍可用于向后兼容,Magento不会为新产品分配值,因此不建议继续使用它.也许您可以尝试使用$ product-> getProductUrl()代替.
生成了错误的网址,因为它找不到重写的网址。可能是由于错误的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>";
Run Code Online (Sandbox Code Playgroud)
结果:
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/
Run Code Online (Sandbox Code Playgroud)
可以在名为core_url_rewrite的表中找到正确的url重写(包括有关store_id的信息)
如果在core_url_rewrite中找到匹配的值,它将生成“正确的url”,否则将连接product_id + url键+ category_id
$routePath = 'catalog/product/view';
$routeParams['id'] = $product->getId();
$routeParams['s'] = $product->getUrlKey();
if ($categoryId) {
$routeParams['category'] = $categoryId;
}
Run Code Online (Sandbox Code Playgroud)