2012-07-30 14 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