Génération du plan du site Google Magento

8

J'ai généré un plan de site Google via le panneau d'administration de Magento.

J'ai défini le suffixe d'URL du produit (html) et le suffixe d'URL de catégorie (html) dans la configuration.

Ce suffixe ne s'affiche pas dans sitemap.xml.

Il montre juste comme l'URL ci-dessous,

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

mais son jet 404 avec suffixe d'URL

Et j'ai aussi désactivé certaines catégories de parents, comme

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

Ainsi, le plan du site génère pour la catégorie comme celle-ci

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

mais je dois montrer comme ça

www.site.com/men/crew-neck

comment y parvenir. J'ai vérifié dans la collection suivante

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

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

mais pas de chance.

Toute suggestion sera appréciée.

VijayS91
la source
Donc, juste pour clarifier, vous voulez supprimer la sous-catégorie de toutes les URL?
zigojacko
@zigojacko Oui, toutes les sous-catégories ne sont que des catégories désactivées.
VijayS91
Pourquoi ne pas simplement renommer la catégorie Menà Men's T-Shirts? Si vous désactivez une catégorie contenant des sous-catégories, est-il même nécessaire de conserver cette catégorie parent - dans ce cas T-Shirts?
zigojacko
Ou adoptez une approche plus simple, ne générez pas de sitemaps. C'est la même chose que de donner à Google les clés de votre porte d'entrée, et la question est - étant donné qu'ils génèrent 70% de leurs revenus via Adwords - leur faites-vous autant confiance. L'utilisation de tous les outils Google leur permet de profiler instantanément votre site et de vous classer en conséquence - pourquoi le rendre si facile - mais c'est un point commercial non technique - sauf qu'ils sont complètement interconnectés.
Ma question est pourquoi l'url www.site.com/men/t-shirt/crew-neck-t-shirtslance-t-elle un 404. J'ai essayé cela moi-même et désactivé une catégorie parent et les liens complets fonctionnent toujours bien.
David Manners

Réponses:

4

Pour répondre à l'un de vos premiers commentaires:

"J'ai défini le suffixe d'URL du produit (html) et le suffixe d'URL de catégorie (html) dans la configuration.

Ce suffixe ne s'affiche pas dans sitemap.xml. "

Nous avons remarqué ce bogue introduit dans EE 1.13. Nous avons demandé un patch et reçu ce qui suit. Je ne crois pas que ce soit spécifique à l'EE, donc j'espère que cela aide un peu. De plus, nous venons de mettre à niveau un site EE 1.12 vers 1.14 et nous avons remarqué que toutes les extensions .html ont également été supprimées de sitemap.xml. Oui, avoir .html est de la vieille école et n'a vraiment aucune valeur de référencement de nos jours, mais ce bug peut vraiment sucer s'il passe inaperçu.

Attention ... Je n'ai pas regardé le fichier référencé en communauté. Utilisez-le comme un guide, n'essayez pas d'appliquer le patch à l'aveugle à votre magasin communautaire. Ou si vous le faites, testez-le au moins très attentivement avant de le mettre en ligne.

__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
la source
2

Je n'ai pas testé dans Enterprise 1.13 mais mon extension fonctionne très bien pour les éditions communautaires de magento et devrait également fonctionner avec EE.

Pour tester votre problème, j'ai créé une catégorie parent appelée "Test" ... désactivée. Création d'une sous-catégorie appelée "test-subcat" et l'activation avec le suffixe .html activé pour les URL de catégorie.

Je peux confirmer que le .html est ajouté aux URL de catégorie et que les catégories désactivées ne sont pas incluses dans le plan du site. Si vous souhaitez que votre catégorie soit affichée sur www.site.com/men/crew-neck, déplacez simplement "ras du cou" hors de la catégorie "T-shirts" et placez-le dans la catégorie parent "Hommes".

user2201302
la source
1

Si vous souhaitez masquer les catégories inactives dans le plan du site Magento: -

Ouvrez /app/design/frontend/package/theme/template/catalog/seo/tree.phtml(ou copiez le fichier depuis basedans cet emplacement): -

Ce fichier affiche la liste des éléments du plan du site.

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

Vous pouvez vérifier si $_itemest actif avant d'afficher: -

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

Si c'est tout ce que vous vouliez faire, faites un tourbillon et voyez si cela résout le problème.

zigojacko
la source