2012-07-30 16 views
8

Ben Magento 1.5.0.1 ve ürün sayfasında blokları satmak yukarı çapraz satışın kullanılan ve getProductUrl() işlevi kullanıyorum farklı bir URL biçimleri yukarı atıyor.Magento getProductUrl() (rasgele?) Doğru url döndürmüyordur

Ya gibi doğru url: /laptop-bag.html Yada yanlış bir (iyi çalıştığını, ama tabii onun değil yeniden yazma URL): /katalog/ürün/görünüm/id/825/sn/laptop-bag/category/16/

Bazen hem çapraz satış hem de satış blokları doğru URL'yi döndürür, bazen her ikisi de daha uzun süreyi kullanır ve bazı durumlarda doğru olanı kullanır ve diğeri uzun süreyi kullanır? ?

bunun neden olduğunu bir fikir?

Zaten bir magento veritabanı onarımı yürüttüm, yeniden endeksledim ve tüm önbellekleri yeniliyor/temizledim.

cevap

13

$product->getUrlPath() yerine

$product->getProductUrl() ait UPDATE deneyin: Magento müşterileri EE önerir @ jordan314 tarafından yorumun altında gereğince:

url_path nitelik artık 1.13 olarak kullanılır ancak yine de geriye dönük kullanılabilir uyumluluk ve Magento yeni ürünler için ona bir değer atamayacaktır, bu yüzden kullanmaya devam etmeniz önerilmez. Belki de yerine $ product-> getProductUrl() kullanmayı deneyebilirsiniz.

+0

teşekkürler! Şu anda neler olduğunu anlayabiliyorum, aslında bir kategoriden bir ürünü görüntülediğinizde ve ilgili/upsell ürünleri aynı kategoride bulunmadığında gerçekleşir. Urlpath kullanarak, kökünden alır. ÇALIŞIYOR bir cazibe gibi! – cappuccino

+0

Teşekkürler Kalpesh, aynı sorunu vardı, bir sürü kazma ve bunu buldu! parlak!! –

+0

@AdamLesniak Yardım etmeye sevindim :) – Kalpesh

3

Yeniden yazılan URL'yi bulamadığı için yanlış url oluşturulur. Belki yanlış store_id nedeniyle kaynaklanıyor. örn:

$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>"; 

sonucu: o core_url_rewrite içinde eşleşme değeri bulduysanız doğru url yeniden yazma (Store_id hakkında bilgiler dahil) tablo adında core_url_rewrite

bulunabilir

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/ 

, buna product_id + adres tuşu + category_id

$routePath = 'catalog/product/view'; 
$routeParams['id'] = $product->getId(); 
$routeParams['s'] = $product->getUrlKey(); 
if ($categoryId) { 
    $routeParams['category'] = $categoryId; 
} 
Concat olacak 'doğru url' başka üretecektir
2

O bana yardım etti

$collection->addUrlRewrite(); 

koleksiyonunuzu alıyoruz bu eklemek deneyin.

+0

Bu benim için de çalıştı –

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

Cevabınız kesinlikle küçük bir açıklama değer. [bir açıklama dahil] (http://meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers) gönderinin kalitesini iyileştirmeye yardımcı olur. –