如果产品ID不可用且只有产品的网址,那么如何在Magento中加载产品模型?例如,我想从它友好的URL中检索产品模型,例如
electronics/cameras/olympus-stylus-750-7-1mp-digital-camera.html
Run Code Online (Sandbox Code Playgroud)
我在另一篇文章中找到了以下代码:
$oRewrite = Mage::getModel('core/url_rewrite')->loadByRequestPath(
$path
);
Run Code Online (Sandbox Code Playgroud)
但它似乎没有正常工作.Magento的文档在这方面非常缺乏; 有谁知道如何做到这一点?
Jim*_*ran 19
这是另一种解决方案.
首先使用URL重写模型查找与您的产品匹配的路线:
$vPath = 'electronics/cameras/olympus-stylus-750-7-1mp-digital-camera.html';
$oRewrite = Mage::getModel('core/url_rewrite')
->setStoreId(Mage::app()->getStore()->getId())
->loadByRequestPath($vPath);
Run Code Online (Sandbox Code Playgroud)
然后你可以在路由上调用getProductId()来找到produc的id:
$iProductId = $oRewrite->getProductId();
Run Code Online (Sandbox Code Playgroud)
最后,如果您需要产品模型对象本身,那么调用它是一件简单的事情:
$oProduct = Mage::getModel('catalog/product')->load($iProductId);
Run Code Online (Sandbox Code Playgroud)
上面的主要区别和你发布的代码示例是对setStoreId的调用.同一产品可能具有不同的URL,具体取决于它所在的商店,因此路由组件需要具有相应的商店上下文才能找到要显示的产品.
该上扎卡里Schuessler的解决方案的优点是使用URL重写每次都会找到正确的产品,如果该URL的结尾部分是针对不同的产品相同(例如文件夹1 /我的产品名称和文件夹2 /我 - 产品 - 名称是不同的产品).使用URL重写器也适用于"folder1/my-product"指不同商店中的不同产品的情况.这可能适用于您的环境,也可能不适用.
归档时间: |
|
查看次数: |
9786 次 |
最近记录: |