Magento:如何为产品设置规范 URL?
Magento : how to set canonical URL for product?
我正在使用 megento 1.7.0.2,一些产品有 3 或 4 个不同的 url :
example.com/category1/product1.html
example.com/category1/category2/product1.html
example.com/prodcut1.html
...
在 Prodcut1 的 HTML 代码中,magento 添加了这个标签:
<link rel="canonical" href="http://example.com/product1.html">
如何选择另一个URL?例如:
<link rel="canonical" href="http://example.com/category1/category2/product1.html">
很遗憾,默认的 Magento 功能无法完成此操作。
首先,您需要决定在定义规范 URL 时要考虑哪些标准。
我们的Magento SEO extension会让你选择:
- 最长的URLs(包含最大字符数的那些)
- URLs 最大类别深度级别
- 具有最小类别深度级别的非根 URL(并且至少具有
的非根 URL
- 具有最少字符数(和至少一个类别)的非根用户URL
这些 URL 也可以添加到 HTML 和 XML 站点地图中。
除此之外,您可以单独 select 任意选择的产品 URL 或输入自定义规范。
你也可以自己尝试,使用重写的集合。对于社区版,它看起来像这样:
$collection = Mage::getResourceModel('core/url_rewrite_collection');
$collection->getSelect()->where('product_id = ? AND category_id is not null AND is_system = 1', $productId, Zend_Db::INT_TYPE); <- с наличием категории
$collection->addStoreFilter(Mage::app()->getStore()->getId());
$collection->getSelect()->order(new Zend_Db_Expr('LENGTH(request_path) ' . 'DESC')); <- sorting that depends on the principle of canonical settings.
$rewriteModel = $collection->getFirstItem();
var_dump($rewriteModel); <-damp of the acquired object
然后需要连接base store URL + "request_path" 属性 form object + URL suffix (如果需要的话).
我正在使用 megento 1.7.0.2,一些产品有 3 或 4 个不同的 url :
example.com/category1/product1.html
example.com/category1/category2/product1.html
example.com/prodcut1.html
...
在 Prodcut1 的 HTML 代码中,magento 添加了这个标签:
<link rel="canonical" href="http://example.com/product1.html">
如何选择另一个URL?例如:
<link rel="canonical" href="http://example.com/category1/category2/product1.html">
很遗憾,默认的 Magento 功能无法完成此操作。
首先,您需要决定在定义规范 URL 时要考虑哪些标准。
我们的Magento SEO extension会让你选择:
- 最长的URLs(包含最大字符数的那些)
- URLs 最大类别深度级别
- 具有最小类别深度级别的非根 URL(并且至少具有 的非根 URL
- 具有最少字符数(和至少一个类别)的非根用户URL
这些 URL 也可以添加到 HTML 和 XML 站点地图中。
除此之外,您可以单独 select 任意选择的产品 URL 或输入自定义规范。
你也可以自己尝试,使用重写的集合。对于社区版,它看起来像这样:
$collection = Mage::getResourceModel('core/url_rewrite_collection');
$collection->getSelect()->where('product_id = ? AND category_id is not null AND is_system = 1', $productId, Zend_Db::INT_TYPE); <- с наличием категории
$collection->addStoreFilter(Mage::app()->getStore()->getId());
$collection->getSelect()->order(new Zend_Db_Expr('LENGTH(request_path) ' . 'DESC')); <- sorting that depends on the principle of canonical settings.
$rewriteModel = $collection->getFirstItem();
var_dump($rewriteModel); <-damp of the acquired object
然后需要连接base store URL + "request_path" 属性 form object + URL suffix (如果需要的话).