Saya mendapatkan koleksi produk dari kategori tertentu pada halaman di beberapa situs Magento yang berbeda. Kode saya untuk mendapatkan koleksi adalah:
$category = new Mage_Catalog_Model_Category();
$category->load($id);
$collection = $category->getProductCollection();
$collection->addAttributeToSelect('*');
$collection->addAttributeToFilter('status', 1);
$collection->addFieldToFilter(array(array('attribute'=>'visibility', 'neq'=>"1" )));
$collection->getSelect()->limit(12);
foreach ($collection as $shopProduct) :
echo $shopProduct->getProductUrl();
endforeach;
Masalah saya adalah bahwa di salah satu situs Magento kami menjalankan ProductUrl()
yang diambil adalah URL sepertihttp://www.my site.com/catalog/product/view/id/2309/s/shopcat/category/373/
dan bukan lebih suka http://www.site.com/shopcat/product-url-key.html
. Tetapi di semua situs lain itu muncul seperti yang kita inginkan.
Adakah yang tahu mengapa ini terjadi? Terima kasih! Saya mencoba menggunakangetUrlPath()
juga tetapi ini tidak mengembalikan apa pun. Saya tahu saya bisa menyelesaikan ini dengan melakukan sesuatu seperti <?php echo $this->getBaseUrl().$shopProduct->getUrlKey().".html"; ?>
tetapi metode itu tampaknya sedikit tidak efisien!
EDIT 21/03/14: Saya masih mengalami masalah ini. Saya menyadari getProductUrl()
mengambil URL yang diinginkan pada beberapa file templat situs tetapi tidak pada yang lain. Misalnya, saya memuat satu koleksi di beranda dan memberi saya URL yang saya inginkan. Tetapi getProductUrl()
tidak memberi saya URL yang saya inginkan dengan kode yang sama pada tampilan kategori.
Jawaban:
Coba dapatkan koleksinya seperti ini:
Dengan kata lain, beri tahu model untuk memberikan kunci url alih-alih dengan url panjang yang jelek
$collection->addUrlRewrite();
.sumber
Mendapatkan URL Produk
Berpotensi membingungkan karena 3 metode yang dapat Anda gunakan, semuanya ada di Mage_Catalog_Model_Product:
Cara terbaik untuk menjelaskan adalah dengan hanya menunjukkan hasil dari beberapa panggilan. Diberikan produk yang kunci URL-nya mondrian-large-coffee-set-multicolour pada domain http: //made.local hasilnya adalah:
sumber