Magento Google Sitemap Generation

8

Ich habe eine Google Sitemap über das Magento Adminpanel erstellt.

Ich habe in der Konfiguration das Produkt-URL-Suffix (HTML) und das Kategorie-URL-Suffix (HTML) festgelegt.

Dieses Suffix wird in sitemap.xml nicht angezeigt.

Es zeigt nur wie unten URL,

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

aber sein Wurf 404 mit URL-Suffix

Und außerdem habe ich einige übergeordnete Kategorien deaktiviert, wie z

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

Die Sitemap wird also für diese Kategorie generiert

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

aber ich muss so zeigen

www.site.com/men/crew-neck

wie man das erreicht. Ich habe die folgende Sammlung eingecheckt

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

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

aber kein Glück.

Anregungen werden geschätzt.

VijayS91
quelle
Um dies zu verdeutlichen, möchten Sie die Unterkategorie aus allen URLs entfernen?
Zigojacko
@zigojacko Ja, nicht alle Unterkategorien sind nur deaktiviert.
VijayS91
Warum nicht einfach die Kategorie umbenennen Menin Men's T-Shirts? Wenn Sie eine Kategorie deaktivieren, die Unterkategorien enthält, muss diese übergeordnete Kategorie dann beibehalten werden - in diesem Fall T-Shirts?
Zigojacko
Oder nehmen Sie den einfacheren Ansatz, generieren Sie keine Sitemaps. Es ist dasselbe wie Google die Schlüssel für Ihre Haustür zu geben. Die Frage ist, ob Sie ihnen 70% ihres Umsatzes über AdWords generieren. Vertrauen Sie ihnen so sehr? Die Verwendung von Google-Tools ermöglicht es ihnen, Ihre Website sofort zu profilieren und Sie entsprechend zu bewerten - warum es so einfach ist -, aber dies ist ein geschäftlicher Punkt, der nicht technisch ist - es sei denn, sie sind vollständig miteinander verbunden.
Meine Frage ist, warum die URL www.site.com/men/t-shirt/crew-neck-t-shirtseine 404 auslöst. Ich habe dies selbst versucht und eine übergeordnete Kategorie deaktiviert, und die vollständigen Links funktionieren immer noch gut.
David Manners

Antworten:

4

So sprechen Sie einen Ihrer ersten Kommentare an:

"Ich habe in der Konfiguration das Produkt-URL-Suffix (HTML) und das Kategorie-URL-Suffix (HTML) festgelegt.

Dieses Suffix wird in sitemap.xml nicht angezeigt. "

Wir haben diesen in EE 1.13 eingeführten Fehler bemerkt. Wir haben einen Patch angefordert und Folgendes erhalten. Ich glaube nicht, dass dies EE-spezifisch ist, also hilft es hoffentlich ein bisschen. Außerdem wurde gerade eine EE 1.12-Site auf 1.14 aktualisiert und festgestellt, dass alle .html-Erweiterungen auch aus sitemap.xml entfernt wurden. Ja, .html zu haben ist alte Schule und heutzutage wirklich keinen SEO-Wert, aber dieser Fehler kann wirklich scheiße sein, wenn er unbemerkt bleibt.

Warnung ... Ich habe mir die referenzierte Datei in der Community nicht angesehen. Verwenden Sie dies als Leitfaden. Versuchen Sie nicht, den Patch blind auf Ihren Community Store anzuwenden. Oder wenn Sie dies tun, testen Sie es zumindest sehr gründlich, bevor Sie live gehen.

__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
mattmac
quelle
2

Ich habe nicht in Enterprise 1.13 getestet, aber meine Erweiterung funktioniert hervorragend für die Community-Editionen von Magento und sollte auch mit EE funktionieren.

Um Ihr Problem zu testen, habe ich eine übergeordnete Kategorie namens "Test" erstellt ... deaktiviert. Erstellt eine Unterkategorie mit dem Namen "test-subcat" und aktiviert diese mit dem für Kategorie-URLs aktivierten Suffix ".html".

Ich kann bestätigen, dass die HTML-Datei zu den URLs der Kategorie hinzugefügt wird und deaktivierte Kategorien nicht in der Sitemap enthalten sind. Wenn Sie möchten, dass Ihre Kategorie unter www.site.com/men/crew-neck angezeigt wird, verschieben Sie einfach "Rundhalsausschnitt" aus der Kategorie "T-Shirts" und platzieren Sie sie in der übergeordneten Kategorie "Männer".

user2201302
quelle
1

Wenn Sie inaktive Kategorien in der Magento-Sitemap ausblenden möchten: -

Öffnen Sie /app/design/frontend/package/theme/template/catalog/seo/tree.phtml(oder kopieren Sie die Datei von basediesem Speicherort): -

Diese Datei rendert die Liste der Elemente in der Sitemap.

<?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 ?>

Sie können überprüfen, ob $_itemes aktiv ist, bevor Sie Folgendes anzeigen: -

<?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 ?>

Wenn dies alles ist, was Sie tun wollten, versuchen Sie es und prüfen Sie, ob das Problem dadurch behoben wird.

Zigojacko
quelle