Magento Google Sitemap Generation

8

Eu tenho gerado o sitemap do google através do Magento adminpanel.

Defina o Sufixo do URL do produto (html) e o Sufixo do URL da categoria (html) na configuração.

Este sufixo não está aparecendo no sitemap.xml.

Apenas mostra como abaixo do URL,

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

mas seu lance 404 com sufixo de URL

E também desabilitei algumas categorias principais, como

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

Portanto, o sitemap gera para a categoria como esta

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

mas eu preciso mostrar assim

www.site.com/men/crew-neck

como conseguir isso. Fiz o check-in na seguinte coleção

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

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

mas sem sorte.

Todas as sugestões serão apreciadas.

VijayS91
fonte
Então, só para esclarecer, você deseja remover a subcategoria de todos os URLs?
zigojacko
@zigojacko Sim, nem todas as subcategorias estão desabilitadas.
VijayS91
Porque não basta mudar o nome da categoria Menpara Men's T-Shirts? Se você estiver desativando uma categoria que contém subcategorias, é necessário manter essa categoria pai - nesse caso T-Shirts?
zigojacko
Ou adote a abordagem mais simples, não gere sitemaps. É o mesmo que fornecer ao Google as chaves da sua porta da frente, e a pergunta é - já que elas geram 70% de sua receita via Adwords - você confia muito nelas. O uso de qualquer ferramenta do Google permite que eles criem perfil instantaneamente no seu site e classifiquem você de acordo - por que torná-lo tão fácil - mas este é um ponto comercial, não técnico - exceto que eles estão completamente interconectados.
Minha pergunta é por que o URL www.site.com/men/t-shirt/crew-neck-t-shirtslança um 404. Eu tentei isso sozinho e desabilitei uma categoria pai e os links completos ainda funcionam bem.
David Manners

Respostas:

4

Para endereçar um dos seus comentários iniciais:

"Defini o Sufixo do URL do produto (html) e o Sufixo do URL da categoria (html) na configuração.

Este sufixo não está aparecendo no sitemap.xml. "

Percebemos esse bug introduzido no EE 1.13. Solicitamos um patch e recebemos o seguinte. Eu não acredito que isso seja específico de EE, então espero que ajude um pouco. Além disso, apenas atualizei um site EE 1.12 para 1.14 e notei que toda a extensão .html também foi removida do sitemap.xml. Sim, ter .html é uma escola antiga e realmente não tem nenhum valor seo atualmente, mas esse bug pode ser péssimo se passar despercebido.

Aviso ... Não olhei para o arquivo referenciado na comunidade. Use isso como um guia, não tente aplicar o patch às cegas em sua loja da comunidade. Ou, se o fizer, pelo menos teste-o minuciosamente antes de ir ao ar.

__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
fonte
2

Não testei no Enterprise 1.13, mas minha extensão funciona muito bem para as edições comunitárias do magento e deve funcionar também com o EE.

Para testar seu problema, criei uma categoria principal chamada "Teste" ... desabilitei. Criou uma subcategoria chamada "test-subcat" e a ativou com o sufixo .html ativado para os URLs da categoria.

Posso confirmar que o .html é adicionado aos URLs da categoria e as categorias desativadas não estão incluídas no mapa do site. Se você deseja que sua categoria seja exibida em www.site.com/men/crew-neck, basta mover "crew-neck" para fora da categoria "Camisetas" e colocá-lo na categoria pai "Homens".

user2201302
fonte
1

Se você deseja ocultar categorias inativas no mapa do site Magento: -

Abra /app/design/frontend/package/theme/template/catalog/seo/tree.phtml(ou copie o arquivo basepara este local): -

Este arquivo renderiza a lista de itens no mapa do 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 ?>

Você pode verificar se $_itemestá ativo antes de exibir: -

<?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 isso é tudo o que você deseja fazer, dê uma olhada e veja se isso resolve o problema.

zigojacko
fonte