Magento Google sitemap Generation


8

He generado google sitemap a través del panel de administración de Magento.

He configurado el Sufijo de URL del producto (html) y el Sufijo de URL de categoría (html) en la configuración.

Este sufijo no se muestra en sitemap.xml.

Simplemente se muestra como la siguiente URL,

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

pero su tiro 404 con sufijo url

Y también he desactivado algunas categorías para padres, como

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

Entonces el mapa del sitio genera para la categoría como esta

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

pero necesito mostrarme así

www.site.com/men/crew-neck

Cómo lograr esto. He verificado la siguiente colección

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

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

Pero sin suerte.

Cualquier sugerencia será apreciada.


Entonces, para aclarar, ¿desea eliminar la subcategoría de todas las URL?
zigojacko

@zigojacko Sí, no todas las subcategorías solo desactivaron la categoría.
VijayS91

¿Por qué no simplemente renombrar la categoría Mena Men's T-Shirts? Si está deshabilitando una categoría que contiene subcategorías, ¿es necesario mantener esa categoría principal, en este caso T-Shirts?
zigojacko

O tome el enfoque más simple, no genere mapas de sitio. Es lo mismo que darle a Google las llaves de su puerta de entrada, y la pregunta es, dado que generan el 70% de sus ingresos a través de Adwords, ¿confía tanto en ellos? El uso de cualquier herramienta de Google les permite perfilar instantáneamente su sitio y clasificarlo en consecuencia, por qué hacerlo tan fácil, pero este es un punto comercial, no técnico, excepto que están completamente interconectados.

Mi pregunta es por qué la url www.site.com/men/t-shirt/crew-neck-t-shirtsarroja un 404. Lo intenté yo mismo y deshabilité una categoría principal y los enlaces completos aún funcionan bien.
David Manners

Respuestas:


4

Para abordar uno de sus comentarios iniciales:

"Establecí el Sufijo de URL del producto (html) y el Sufijo de URL de categoría (html) en la configuración.

Este sufijo no se muestra en sitemap.xml ".

Notamos este error introducido en EE 1.13. Solicitamos un parche y recibimos lo siguiente. No creo que esto sea específico de EE, así que espero que ayude un poco. Además, acabo de actualizar un sitio EE 1.12 a 1.14 y noté que todas las extensiones .html también se eliminaron de sitemap.xml. Sí, tener .html es de la vieja escuela y realmente no tiene ningún valor seo en estos días, pero este error realmente puede ser malo si pasa desapercibido.

Advertencia ... No miré el archivo referenciado en la comunidad. Use esto como guía, no intente aplicar el parche a ciegas en su tienda comunitaria. O si lo hace, al menos pruébelo a fondo antes de ponerlo en funcionamiento.

__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

No he probado en Enterprise 1.13 pero mi extensión funciona muy bien para las ediciones comunitarias de magento y también debería funcionar con EE.

Para probar su problema, creé una categoría principal llamada "Prueba" ... la deshabilité. Creó una subcategoría llamada "test-subcat" y habilítela con el sufijo .html habilitado para las URL de categoría.

Puedo confirmar que el .html se agrega a las URL de categoría y las categorías deshabilitadas no se incluyen en el mapa del sitio. Si desea que su categoría se muestre en www.site.com/men/crew-neck, simplemente mueva "cuello redondo" fuera de la categoría "Camisetas" y colóquela debajo de la categoría principal "Hombres".


1

Si desea ocultar categorías inactivas en el mapa del sitio de Magento: -

Abra /app/design/frontend/package/theme/template/catalog/seo/tree.phtml(o copie el archivo desde baseesta ubicación): -

Este archivo representa la lista de elementos en el mapa del sitio.

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

Puede verificar si $_itemestá activo antes de mostrar: -

<?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 esto es todo lo que querías hacer, dale un giro y mira si eso resuelve el problema.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.