Tôi đang nhận được một bộ sưu tập sản phẩm của một danh mục nhất định trên một trang trong một vài trang Magento khác nhau. Mã của tôi để có được bộ sưu tập là:
$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;
Vấn đề của tôi là trên một trong những trang Magento chúng tôi đang chạy ProductUrl()
được tìm nạp là một URL giống http://www.my site.com/catalog/product/view/id/2309/s/shopcat/category/373/
và không thích hơn http://www.site.com/shopcat/product-url-key.html
. Nhưng trên tất cả các trang web khác, nó xuất hiện như chúng ta muốn.
Có ai biết tại sao điều này có thể? Cảm ơn! Tôi đã thử sử dụnggetUrlPath()
nhưng điều này không trả lại bất cứ điều gì. Tôi biết tôi có thể làm tròn điều này bằng cách làm một cái gì đó như thế <?php echo $this->getBaseUrl().$shopProduct->getUrlKey().".html"; ?>
nhưng phương pháp đó có vẻ hơi kém hiệu quả!
EDIT 21/03/14: Tôi vẫn gặp vấn đề này. Tôi đã nhận ra getProductUrl()
lấy URL mong muốn trên một số tệp mẫu của trang web chứ không phải các tệp khác. Ví dụ: tôi đang tải một bộ sưu tập trên trang chủ và nó cung cấp cho tôi các URL tôi muốn. Nhưng getProductUrl()
không cung cấp cho tôi các URL tôi muốn với cùng mã trên chế độ xem danh mục.