2010-12-17 50 views
0

Magento的,似乎有一些不同的格式,对产品的网址的工作,其中包括:Magento的一致的产品网址

/catalog/product/view/id/123/s/my-product-slug/ 
/my-product-slug/ 
/top-category/sub-category/my-product-slug/ 
etc... 

我只想使用其中的一个,永远,这是第三一个,连接所有父母类别在产品slu before前slu together在一起。有没有办法将Magento配置为仅使用这些格式之一?

getProductUrl()使用方法,似乎这取决于页/上下文你在,谁能告诉我这是为什么返回不同的结果?

而在一般没有人知道任何文件或博客文章等,可能会帮助我了解在Magento路由更好一点?

谢谢!

回答

3

clockworkgeek相当接近,领着我到我的答案......

我尝试使用$product->setCategoryId()并发现$product->getCategoryId()不返回任何东西,而且Mage_Catalog_Model_Product_Url::getUrl方法取决于getCategoryId方法上产品模型来确定产品的URL。结果getCategoryId在产品模型中明确定义(不是像我所假设的魔术方法),返回值为Mage::registry('current_category')。所以基本上我注册和未注册'current_category'来满足我的需求。

这仍然留下,虽然我的问题部分得到解答。我想通了,如何破解四周,得到我想要的网址,但在技术上凌乱/catalog/product/view/id/123/s/my-product-slug/型的网址仍然可以工作,我宁愿所有的URL路径品种的类别,田间之一。能够在Magento中定义单一的,规范的URL风格将会很棒。如果有人对此有进一步的了解,请让我知道!

0

我不知道如果这是你需要什么,现在不能检查,但试试这个:

$product_url = "http://www.domain.com/".$product->getUrlPath(); 
2

要强制URL我敢肯定,你的产品必须包含的类别ID。

$product->setCategoryId(7)->getProductUrl(); 

当然7只是一个例子。一个产品可以属于很多类别,所以你必须决定如何选择一个,也许是假设第一个。

+0

谢谢!这不是很正确,但它让我去答案:) – 2011-01-06 22:55:54