我在几个不同的Magento网站的页面上都得到了某个类别的产品集合。我获取收藏的代码是:
$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;
我的问题是,在我们正在运行的Magento站点之一上,ProductUrl()
被抓取的网址是,http://www.my site.com/catalog/product/view/id/2309/s/shopcat/category/373/
而不是http://www.site.com/shopcat/product-url-key.html
。但是,在所有其他网站上,它都可以按照我们的意愿出现。
有谁知道为什么会这样吗?谢谢!我也尝试使用,getUrlPath()
但这没有返回任何内容。我知道我可以通过做类似的事情来解决这个问题,<?php echo $this->getBaseUrl().$shopProduct->getUrlKey().".html"; ?>
但是这种方法似乎效率不高!
编辑21/03/14:我仍然有这个问题。我已经意识到getProductUrl()
可以在网站的某些模板文件上检索所需的URL,但不能在其他文件上检索。例如,我在首页上加载了一个收藏集,并且给了我想要的URL。但是getProductUrl()
没有在类别视图中用相同的代码提供我想要的URL。