Magento Googleサイトマップの生成


8

Magento管理パネルからgoogleサイトマップを生成しました。

製品URLサフィックス(html)とカテゴリURLサフィックス(html)を構成で設定しました。

このサフィックスは、sitemap.xmlには表示されません。

それは単に以下のURLのように表示されます、

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

しかし、URL接尾辞付きのスロー404

また、私はいくつかの親カテゴリを無効にしました

-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 14年

@zigojackoはい、すべてのサブカテゴリが無効なカテゴリだけではありません。
VijayS91 14年

理由だけではなく、カテゴリの名前を変更していないMenMen's T-Shirts?サブカテゴリを保持するカテゴリを無効にする場合は、その親カテゴリを保持する必要さえあります-この例ではT-Shirts
zigojacko 14年

または、より簡単なアプローチをとって、サイトマップを生成しないでください。これは、Googleに玄関の鍵を与えるのと同じです。問題は、AdWordsを介して収益の70%を生み出していることを考えると、それほど信頼できるということです。Googleツールを使用すると、サイトを即座にプロファイリングし、それに応じてランク付けすることができます-なぜそれほど簡単にするのでしょうか。しかし、完全に相互接続されていることを除いて、これは技術的なものではなくビジネスポイントです。

私の質問は、なぜURL www.site.com/men/t-shirt/crew-neck-t-shirtsが404をスローするのかということです。私はこれを自分で試し、親カテゴリを無効にしましたが、完全なリンクはまだうまく機能しています。
David Manners 2014

回答:


4

最初のコメントの1つに対処するには:

「構成に製品URLサフィックス(html)とカテゴリURLサフィックス(html)を設定しました。

このサフィックスは、sitemap.xmlには表示されません。」

EE 1.13で導入されたこのバグに気づきました。パッチをリクエストし、以下を受け取りました。これはEE固有のものではないので、少し役立つと思います。また、EE 1.12サイトを1.14にアップグレードしたところ、すべての.html拡張子がsitemap.xmlからも削除されていることに気付きました。はい、.htmlを持つことは古い学校で、最近のseoの価値はまったくありませんが、このバグが気付かれない場合は本当に厄介です。

警告...コミュニティで参照ファイルを確認しませんでした。これをガイドとして使用してください。コミュニティストアに盲目的にパッチを適用しないでください。または、実際に使用する前に、少なくとも十分にテストしてください。

__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-subcat」というサブカテゴリを作成し、.url接尾辞を有効にしてカテゴリURLを有効にしました。

.htmlがカテゴリのURLに追加され、無効なカテゴリがサイトマップに含まれていないことが確認できました。カテゴリをwww.site.com/men/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 ?>

これで十分な場合は、それを試して、問題が解決するかどうかを確認します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.