2012-07-30 18 views
8

मैं Magento 1.5.0.1 और getProductUrl() पार बेचने में प्रयोग किया जाता है और ऊपर उत्पाद पृष्ठ पर ब्लॉक बेचने समारोह का उपयोग कर रहा विभिन्न URL स्वरूपों ऊपर फेंक रहा है।Magento getProductUrl() सही यूआरएल लौटा रहा है नहीं (यादृच्छिक?)

या तो की तरह सही यूआरएल: /laptop-bag.html या गलत एक (अच्छी तरह से यह काम करता है, लेकिन निश्चित रूप से अपनी नहीं पुनर्लेखन URL): /सूची/उत्पाद/देखें/आईडी/825/s/लैपटॉप-बैग/श्रेणी/16/

कभी-कभी दोनों क्रॉस बेचना और बेचने वाले ब्लॉक सही यूआरएल वापस करते हैं, कभी-कभी दोनों लंबे संस्करण का उपयोग करते हैं, और कुछ मामलों में, कोई सही उपयोग करता है और दूसरा लंबे संस्करण का उपयोग करता है? ?

कोई विचार यह क्यों हो रहा है?

मैं पहले से ही एक Magento डेटाबेस की मरम्मत, reindexed, और के रिफ्रेश/सभी कैश प्लावित चल चुके हैं। क्योंकि यह फिर से लिखा यूआरएल नहीं मिल सकता है

उत्तर

13

$product->getUrlPath() के बजाय $product->getProductUrl()

अद्यतन का प्रयास करें: के रूप में टिप्पणी नीचे प्रति @ jordan314 द्वारा, Magento ग्राहकों ई करने के लिए सिफारिश की गई है:

url_path विशेषता नहीं रह गया है 1.13 के रूप में प्रयोग किया जाता है, लेकिन अभी भी backward- के लिए उपलब्ध है संगतता, और Magento नए उत्पादों के लिए इसे एक मान असाइन नहीं करेगा, इसलिए इसका उपयोग जारी रखने की अनुशंसा नहीं की जाती है। शायद आप इसके बजाय $ product-> getProductUrl() का उपयोग करने का प्रयास कर सकते हैं।

+0

धन्यवाद! मैं देख सकता हूं कि अब क्या हुआ, अनिवार्य रूप से ऐसा होता है जब आप किसी श्रेणी से उत्पाद देख रहे होते हैं और संबंधित/अपसेल उत्पाद एक ही श्रेणी में मौजूद नहीं होते हैं। Urlpath का उपयोग करके, यह इसे रूट से प्राप्त करता है। एक जादू की तरह काम करता है! – cappuccino

+0

धन्यवाद कल्पना, एक ही मुद्दा था, खुदाई के बहुत सारे और पाया! प्रतिभाशाली!! –

+0

@AdamLesniak मदद करने के लिए :) – Kalpesh

3

गलत 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 key + category_id

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

इस ऐड

$collection->addUrlRewrite(); 

यह मुझे मदद मिली है, जब आप अपने संग्रह हो रही है की कोशिश करो।

+0

यह मेरे लिए भी काम करता है –

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) वास्तव में आपकी पोस्ट की गुणवत्ता में सुधार करने में मदद करता है। –

संबंधित मुद्दे