我有我的商店中有前端頁面的自定義模塊(我購買或開發)。 如何將這些頁面包含在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. MAGENTO - 將數據添加到自定義模塊
- 4. 站點自定義模塊
- 5. Magento將自定義塊添加到銷售訂單視圖
- 6. Magento自定義模塊與自定義URL添加.html擴展
- 7. 在自定義模塊magento中添加自定義按鈕
- 8. 如何將自定義標記圖標添加到Google地圖?
- 9. 如何將自定義本地字體添加到Jekyll站點?
- 10. Magento:將圖像(或任何屬性)添加到自定義模塊
- 11. 將自定義信息窗口添加到Google地圖
- 12. 將自定義標記添加到Google地圖
- 13. 使用API v2將自定義標記添加到Google地圖
- 14. 無法將自定義標記添加到Google地圖(JS)
- 15. Magento的:添加圖片字段自定義模塊
- 16. Django站點地圖 - 將loc添加到站點地圖
- 17. 將塊添加到magento adminhtml模塊
- 18. 在自定義模塊中添加SKU到Magento中的sales_flat_quote
- 19. 自定義模塊添加到購物車成功消息Magento
- 20. Magento自定義站點
- 21. 將自定義模塊或視圖添加到MEAN堆棧
- 22. 如何將視圖添加到由Drupal中的XML站點地圖模塊生成的站點地圖?
- 23. Magento:在結帳/購物車中添加自定義模塊塊
- 24. Magento擴展:添加自定義塊到產品視圖
- 25. 將自定義後端模型添加到自定義屬性
- 26. magento setdata自定義模塊
- 27. 自定義Magento模塊
- 28. 將Google站點地圖標題添加到根元素?
- 29. Magento自定義模塊圖像恢復
- 30. 將模塊安裝到自定義站點包目錄