Magento Google Карта сайта Поколение

8

Я создал Google Sitemap через админпанель Magento.

Я настроил суффикс URL продукта (html) и суффикс URL категории (html) в конфигурации.

Этот суффикс не отображается в sitemap.xml.

Это просто показывает, как показано ниже URL,

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

но его бросок 404 с суффиксом URL

А также я отключил некоторые родительские категории, такие как

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

Таким образом, карта сайта генерируется для такой категории

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

но мне нужно показать, как это

www.site.com/men/crew-neck

как этого добиться. Я проверил в следующей коллекции

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

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

но не повезло.

Любые предложения будут оценены.

VijayS91
источник
Просто чтобы уточнить, вы хотите удалить подкатегорию из всех URL?
zigojacko
@zigojacko Да, не все подкатегории только отключенные категории.
VijayS91
Почему бы просто не переименовать категорию Menв Men's T-Shirts? Если вы отключаете категорию, которая содержит подкатегории, тогда есть ли необходимость сохранить эту родительскую категорию - в данном случае T-Shirts?
zigojacko
Или используйте более простой подход, не создавайте карты сайта. Это то же самое, что дать Google ключи от вашей входной двери, и вопрос в том, что, учитывая, что они получают 70% своего дохода с помощью AdWords, вы им так доверяете? Использование любых инструментов Google позволяет им мгновенно профилировать ваш сайт и оценивать вас соответствующим образом - зачем так легко - но это бизнес, а не техническая точка зрения - за исключением того, что они полностью взаимосвязаны.
У меня вопрос, почему URL www.site.com/men/t-shirt/crew-neck-t-shirtsбросает 404. Я пробовал это сам и отключил родительскую категорию, и полные ссылки все еще работают хорошо.
Дэвид Мэннерс

Ответы:

4

Чтобы ответить на один из ваших начальных комментариев:

"Я настроил суффикс URL продукта (html) и суффикс URL категории (html) в конфигурации.

Этот суффикс не отображается в sitemap.xml. "

Мы заметили эту ошибку, введенную в EE 1.13. Мы запросили патч и получили следующее. Я не верю, что это специфично для EE, так что, надеюсь, это немного поможет. Кроме того, просто обновили сайт EE 1.12 до версии 1.14 и заметили, что все расширение .html было также удалено из sitemap.xml. Да, наличие .html - это старая школа, и в наши дни она не имеет особой ценности, но эта ошибка может действительно не сработать, если останется незамеченной.

Предупреждение ... Я не смотрел на указанный файл в сообществе. Используйте это как руководство, не пытайтесь применить патч вслепую к вашему магазину сообщества. Или, если вы это сделаете, по крайней мере, проверить это очень тщательно, прежде чем начать жить.

__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
источник
2

Я не тестировал в Enterprise 1.13, но мое расширение отлично работает для выпусков сообщества magento и должно работать с EE.

Чтобы проверить вашу проблему, я создал родительскую категорию под названием «Тест» ... отключил ее. Создал подкатегорию с именем «test-subcat» и включил ее с включенным суффиксом .html для URL-адресов категорий.

Я могу подтвердить, что .html добавляется в URL-адреса категорий, а отключенные категории не включаются в карту сайта. Если вы хотите, чтобы ваша категория отображалась на сайте www.site.com/men/crew-neck, просто переместите «вырез с круглым вырезом» из категории «Футболки» и поместите его в родительскую категорию «Мужчины».

user2201302
источник
1

Если вы хотите скрыть неактивные категории в карте сайта Magento: -

Откройте /app/design/frontend/package/theme/template/catalog/seo/tree.phtml(или скопируйте файл baseв это место): -

Этот файл отображает список элементов в карте сайта.

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

Вы можете проверить, $_itemактивен ли перед отображением: -

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

Если это все, что вы хотели сделать, поверните и посмотрите, решит ли это проблему.

zigojacko
источник