Generazione Sitemap Google Magento


8

Ho generato Google Sitemap tramite il pannello di amministrazione di Magento.

Ho impostato Suffisso URL prodotto (html) e Suffisso URL categoria (html) nella configurazione.

Questo suffisso non viene visualizzato in sitemap.xml.

Mostra solo come sotto l'URL,

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

ma il suo lancio 404 con suffisso url

E ho anche disabilitato alcune categorie di genitori, come

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

Quindi la Sitemap genera per la categoria come questa

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

ma devo mostrare in questo modo

www.site.com/men/crew-neck

come raggiungere questo obiettivo. Ho verificato nella seguente raccolta

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

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

ma senza fortuna.

Ogni suggerimento sarà apprezzato.


Quindi, solo per chiarire, vuoi rimuovere la sottocategoria da tutti gli URL?
Zigojacko,

@zigojacko Sì, non tutte le sottocategorie hanno disabilitato solo la categoria.
VijayS91,

Perché non rinominare la categoria Menin Men's T-Shirts? Se stai disabilitando una categoria che contiene sottocategorie, c'è anche la necessità di mantenere quella categoria principale - in questo caso T-Shirts?
Zigojacko,

Oppure utilizza l'approccio più semplice, non generare sitemap. È come dare a Google le chiavi della tua porta di casa e la domanda è - dato che generano il 70% delle loro entrate tramite AdWords - ti fidi così tanto di loro. L'uso di qualsiasi strumento di Google consente loro di profilare istantaneamente il tuo sito e classificarti di conseguenza - perché renderlo così facile - ma questo è un punto di business non tecnico - tranne che sono completamente interconnessi.

La mia domanda è: perché l'URL www.site.com/men/t-shirt/crew-neck-t-shirtsgenera un 404. Ho provato questo da solo e ho disabilitato una categoria padre e i collegamenti completi funzionano ancora bene.
David Manners,

Risposte:


4

Per rispondere a uno dei tuoi commenti iniziali:

"Ho impostato Suffisso URL prodotto (html) e Suffisso URL categoria (html) nella configurazione.

Questo suffisso non viene visualizzato in sitemap.xml. "

Abbiamo notato questo errore introdotto in EE 1.13. Abbiamo richiesto una patch e ricevuto quanto segue. Non credo che questo sia specifico di EE, quindi spero che sia di aiuto. Inoltre, ho appena aggiornato un sito EE 1.12 a 1.14 e ho notato che tutte le estensioni .html sono state eliminate anche da sitemap.xml. Sì, avere .html è vecchia scuola e in realtà non ha alcun valore seo in questi giorni, ma questo bug può davvero succhiare se passa inosservato.

Avviso ... Non ho esaminato il file di riferimento nella community. Usalo come guida, non provare ad applicare la patch ciecamente al tuo negozio della community. O se lo fai, almeno provalo molto accuratamente prima di andare in diretta.

__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

Non ho ancora testato in Enterprise 1.13 ma la mia estensione funziona benissimo per le edizioni della community di magento e dovrebbe funzionare anche con EE.

Per testare il tuo problema ho creato una categoria genitore chiamata "Test" ... disabilitata. Creata una sottocategoria chiamata "test-subcat" e abilitala con il suffisso .html abilitato per gli URL di categoria.

Posso confermare che il .html viene aggiunto agli URL di categoria e che le categorie disabilitate non sono incluse nella Sitemap. Se si desidera visualizzare la propria categoria su www.site.com/men/crew-neck, spostare semplicemente "girocollo" fuori dalla categoria "T-Shirt" e posizionarlo nella categoria padre "Uomo".


1

Se desideri nascondere categorie inattive nella mappa del sito Magento: -

Apri /app/design/frontend/package/theme/template/catalog/seo/tree.phtml(o copia il file da basequesta posizione): -

Questo file visualizza l'elenco degli elementi nella 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 ?>

È possibile verificare se $_itemè attivo prima di visualizzare: -

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

Se questo è tutto ciò che volevi fare, fai un vortice e vedi se questo risolve il problema.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.