Magento Google网站地图生成


8

我已经通过Magento adminpanel生成了Google网站地图。

我在配置中设置了产品URL后缀(html)和类别URL后缀(html)。

该后缀未显示在sitemap.xml中。

它只显示在URL下方,

www.site.com/men/t-shirt/crew-neck-T-shirts

但是它的404带有url后缀

而且我也禁用了一些父类别,例如

-root category
   - Men
     - T-shirt // i have disable this category
       - Crew Neck
       - V Neck

因此,站点地图会针对此类生成

www.site.com/men/t-shirt/crew-neck

但是我需要这样表现

www.site.com/men/crew-neck

如何做到这一点。我已经检查了以下收藏

Mage::getResourceModel('sitemap/catalog_category')->getCollection($storeId)

Mage::getResourceModel('sitemap/catalog_product')->getCollection($storeId)

但没有运气。

任何建议将不胜感激。


因此,为了澄清一下,您想从所有URL中删除子类别吗?
zigojacko

@zigojacko是,不是所有子类别都仅禁用类别。
VijayS91 2014年

为什么不只是将类别重命名MenMen's T-Shirts?如果要禁用包含子类别的类别,那么是否甚至需要保留该父类别-在这种情况下T-Shirts
zigojacko 2014年

或者采用更简单的方法,不要生成站点地图。就像给Google通往您前门的钥匙一样,问题是-鉴于它们通过Adwords产生了70%的收入,您是否那么信任他们?使用任何Google工具,他们都可以立即对您的网站进行配置并据此对您进行排名-为什么要如此简单-但这是一个业务点,而不是技术性的点-除非它们是完全互连的。

我的问题是,为什么URL会www.site.com/men/t-shirt/crew-neck-t-shirts抛出404。我自己尝试了此操作,并禁用了父类别,并且完整链接仍然可以正常工作。
大卫·曼纳斯

Answers:


4

解决您的初步意见之一:

“我在配置中设置了产品URL后缀(html)和类别URL后缀(html)。

此后缀未显示在sitemap.xml中。”

我们注意到EE 1.13中引入了此错误。我们请求了补丁程序,并收到了以下内容。我不相信这是特定于EE的,因此希望对您有所帮助。另外,刚刚将EE 1.12站点升级到1.14,并注意到所有.html扩展名也从sitemap.xml中删除了。是的,拥有.html是一门古老的技巧,如今这些东西实际上并没有任何seo值,但是如果不引起注意,则此bug确实很糟糕。

警告...我没有在社区中查看引用的文件。以此为指导,不要试图将补丁盲目地应用到社区商店。或者,如果这样做,则至少在上线之前进行非常彻底的测试。

__PATCHFILE_FOLLOWS__
diff --git app/code/core/Mage/Sitemap/Model/Sitemap.php app/code/core/Mage/Sitemap/Model/Sitemap.php
index 2213a4f..734bb91 100644
--- app/code/core/Mage/Sitemap/Model/Sitemap.php
+++ app/code/core/Mage/Sitemap/Model/Sitemap.php
@@ -151,11 +151,13 @@ class Mage_Sitemap_Model_Sitemap extends Mage_Core_Model_Abstract
          */
         $changefreq = (string)Mage::getStoreConfig('sitemap/category/changefreq', $storeId);
         $priority   = (string)Mage::getStoreConfig('sitemap/category/priority', $storeId);
+        $urlSuffix  = Mage::helper('catalog/category')->getCategoryUrlSuffix($storeId);
+        $urlSuffix  = ($urlSuffix) ? '.' . $urlSuffix : '';
         $collection = Mage::getResourceModel('sitemap/catalog_category')->getCollection($storeId);
         foreach ($collection as $item) {
             $xml = sprintf(
                 '<url><loc>%s</loc><lastmod>%s</lastmod><changefreq>%s</changefreq><priority>%.1f</priority></url>',
-                htmlspecialchars($baseUrl . $item->getUrl()),
+                htmlspecialchars($baseUrl . $item->getUrl() . $urlSuffix),
                 $date,
                 $changefreq,
                 $priority
@@ -169,11 +171,13 @@ class Mage_Sitemap_Model_Sitemap extends Mage_Core_Model_Abstract
          */
         $changefreq = (string)Mage::getStoreConfig('sitemap/product/changefreq', $storeId);
         $priority   = (string)Mage::getStoreConfig('sitemap/product/priority', $storeId);
+        $urlSuffix  = Mage::helper('catalog/product')->getProductUrlSuffix($storeId);
+        $urlSuffix  = ($urlSuffix) ? '.' . $urlSuffix : '';
         $collection = Mage::getResourceModel('sitemap/catalog_product')->getCollection($storeId);
         foreach ($collection as $item) {
             $xml = sprintf(
                 '<url><loc>%s</loc><lastmod>%s</lastmod><changefreq>%s</changefreq><priority>%.1f</priority></url>',
-                htmlspecialchars($baseUrl . $item->getUrl()),
+                htmlspecialchars($baseUrl . $item->getUrl() . $urlSuffix),
                 $date,
                 $changefreq,
                 $priority

2

我尚未在Enterprise 1.13中进行测试,但我的扩展程序非常适合magento的社区版本,并且也应与EE一起使用。

为了测试您的问题,我创建了一个名为“ Test”的父类别...将其禁用。创建了一个名为“ test-subcat”的子类别,并为类别URL启用了.html后缀。

我可以确认.html已添加到类别url中,并且禁用的类别未包含在站点地图中。如果您希望在www.site.com/men/crew-neck上显示您的类别,则只需将“ crew-neck”移出“ T恤”类别,然后将其置于“男士”父类别下。


1

如果您想在Magento网站地图中隐藏非活动类别:-

打开/app/design/frontend/package/theme/template/catalog/seo/tree.phtml(或将文件复制base到该位置):-

此文件呈现站点地图中的项目列表。

<?php $_items = $this->getCollection(); ?>
<?php if($_items->getSize()): ?>
    <ul class="sitemap">
        <?php foreach ($_items as $_item): ?>
            <li class="level-<?php echo $this->getLevel($_item) ?>" <?php echo $this->getLevel($_item)?'style="padding-left:' . $this->getLevel($_item, 2) . '0px;"':'' ?>><a href="<?php echo $this->getItemUrl($_item) ?>"><?php echo $_item->name ?></a></li>
        <?php endforeach; ?>
    </ul>
<?php else: ?>
    <p class="note-msg">
        <?php echo $this->__('There are no %s available.', $this->getItemsTitle()); ?>
    </p>
<?php endif ?>

您可以$_item在显示之前检查是否处于活动状态:-

<?php $_items = $this->getCollection(); ?>
<?php if($_items->getSize()): ?>
    <ul class="sitemap">
        <?php if( $_item->is_active ) : ?>
            <?php foreach ($_items as $_item): ?>
                <li class="level-<?php echo $this->getLevel($_item) ?>" <?php echo $this->getLevel($_item)?'style="padding-left:' . $this->getLevel($_item, 2) . '0px;"':'' ?>><a href="<?php echo $this->getItemUrl($_item) ?>"><?php echo $_item->name ?></a></li>
            <?php endforeach; ?>
        <?php endif; ?> 
    </ul>
<?php else: ?>
    <p class="note-msg">
        <?php echo $this->__('There are no %s available.', $this->getItemsTitle()); ?>
    </p>
<?php endif ?>

如果这是您要做的全部操作,请旋转一下,看看是否可以解决问题。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.