我有我的商店中有前端页面的自定义模块(我购买或开发)。 如何将这些页面包含在Magento生成的Google站点地图中?Magento - 将自定义模块添加到Google站点地图
回答
生成网站地图的功能是:Mage_Sitemap_Model_Sitemap::generateXml()
其执行以下操作:
- 打开文件的读写XML头
- 得到类别集合并将它写入sitemap文件
- 获取产品集合并将其写入站点地图文件
- 获取CMS集合并将其写入站点地图文件
- 关闭网站地图xml文件
没有事件被关闭XML文件......在这种情况下,前布控,你可以扩展Mage_Sitemap_Model_Sitemap
和覆盖generateXml()
功能添加自定义的网址(如果这些网址不上述任何的集合:类别,产品,CMS页)
另一种方法,以您的问题是使用多个站点地图文件和一个站点地图索引文件(谷歌支持这一点:http://googlewebmastercentral.blogspot.co.uk/2006/10/multiple-sitemaps-in-same-directory.html)。在这种情况下,你可以有一个单独的模块来生成第二个xml站点地图文件。
的Magento确实添加了事件sitemap_products_generating_before和更高版本sitemap_categories_generating_before(我不知道什么时候,我的版本是1.9.2)。所以,如果你像我这样st this这个主题,寻找将自定义模块的页面添加到Google Sitemap的最佳方式,这对于这些事件来说是多么简单:
在我的情况中,我有一个自定义模块创建动态的“新闻”页面,所以我添加一个事件监听器到我的模块的config.xml中的<global>标签。我选择去与产品网站地图事件*:
<events>
<sitemap_products_generating_before>
<observers>
<{your_unique_event_observer_name}>
<class>{Brand}_{Module}_Model_Observer</class>
<method>addPagesToSitemap</method>
</{your_unique_event_observer_name}>
</observers>
</sitemap_products_generating_before>
</events>
,然后在我的模块的观察,我让方法addPagesToSitemap额外的项目添加到产品集合(或类别collecton,如果与去类别网站地图事件):
class {Brand}_{Module}_Model_Observer
{
function addPagesToSitemap(Varien_Event_Observer $observer){
$sitemapItems = $observer->getEvent()->getCollection()->getItems();
// Get your module's page collection including their urls
// Adjust the following lines to your needs
$collection = Mage::getModel('{brand}_{module}/pages')->getCollection()
->addFieldToSelect(array('page_id','url'))
->addFieldToFilter('display', 1);
// My module stores the page path separately,
// you might don't need this:
$modulePagePath = Mage::helper('{my-modules-helper}')->getNewsPath();
foreach($collection as $_item){
$varienObject = new Varien_Object();
// We don't want to override
// any existing product/category items
$uniqueId = '{module}'.$_item->getPageId();
$varienObject->setId($uniqueId);
// You might want to adjust this if your item
// stores the complete url. Don't add the base url tho,
// Mage_Sitemap_Model_Sitemap::generateXml adds it
$varienObject->setUrl($modulePagePath . DS . $_item->getUrl());
$sitemapItems[$uniqueId] = $varienObject;
}
$observer->getEvent()->getCollection()->setItems($sitemapItems);
return $this;
}
}
就是这样。您可以通过在目录> Google Sitemap中手动生成站点地图来进行测试。
*有些原因的Magento没有添加事件“sitemap_pages_generating_before”,所以你必须要么选择产品或类别的事件一起去。对于这两个事件,Magento都会为您的Magento配置中的&产品页面设置相应的changefreq和priority-value。所以只需选择适合更好的事件。
- 1. 将图像添加到自定义模块中的网站地图页面
- 2. 将分页添加到Magento中的自定义模块中?
- 3. 站点自定义模块
- 4. Magento将自定义块添加到销售订单视图
- 5. Magento自定义模块与自定义URL添加.html扩展
- 6. 在自定义模块magento中添加自定义按钮
- 7. 如何将自定义标记图标添加到Google地图?
- 8. 如何将自定义本地字体添加到Jekyll站点?
- 9. Magento:将图像(或任何属性)添加到自定义模块
- 10. 无法将自定义标记添加到Google地图(JS)
- 11. 使用API v2将自定义标记添加到Google地图
- 12. Magento的:添加图片字段自定义模块
- 13. Django站点地图 - 将loc添加到站点地图
- 14. 将块添加到magento adminhtml模块
- 15. 自定义模块添加到购物车成功消息Magento
- 16. 在自定义模块中添加SKU到Magento中的sales_flat_quote
- 17. 将自定义模块或视图添加到MEAN堆栈
- 18. Magento自定义站点
- 19. 如何将视图添加到由Drupal中的XML站点地图模块生成的站点地图?
- 20. Magento:在结帐/购物车中添加自定义模块块
- 21. Magento扩展:添加自定义块到产品视图
- 22. 将自定义后端模型添加到自定义属性
- 23. 自定义Magento模块
- 24. magento setdata自定义模块
- 25. 将Google站点地图标题添加到根元素?
- 26. Magento自定义模块图像恢复
- 27. 将内容添加到自定义块
- 28. 将模块安装到自定义站点包目录
- 29. 如何将自定义属性添加到Magento中的地址?
- 30. 在Google地图上添加特定地点的自定义场地/活动?