Magento 2: Как я могу получить карту сайта в magento 2?

9

Как мы создаем страницу карты сайта в Magento 2 так же, как в Magento 1?

http://example.com/catalog/seo_sitemap/
Ашиш Джагнани
источник
1
Говоря о XML (sitemap.xml) / HTML Карта сайта? fastcomet.com/tutorials/magento2/sitemap
Анкит Шах
Я хочу, чтобы HTML-карта сайта была такой же, как в Magento1.x
Ашиш Джагнани,
Чтобы создать новую карту сайта для вашего сайта, обратитесь, возможно, вы получите помощь. Emagentosupport.com/2018/12/…
Denish Vachhani

Ответы:

6

Magento 2: по умолчанию не предоставляется HTML Sitemap.

Можно использовать бесплатное расширение:

https://www.mageplaza.com/magento-2-seo-extension/

У вас есть следующие варианты

  • Используйте плагин как http://www.mageworx.com/magento-2-sitemap-extension.html
  • Создать страницу CMS и поставить ссылки
  • Создать пользовательский модуль для генерации HTML-файла Sitemap программно
  • Используйте свой модуль / CMS Link для доступа к этому

Страницы CMS : может ссылаться на статью Magento 1 /programming/5020257/creating-a-magento-sitemap-page Затем преобразуйте ее в Magento 2, и вы получите кое-что полезное для страниц CMS

Для категорий и подкатегорий : Получение всей доступной категории, списка подкатегорий в magento 2

Для категорий Продукт : Magento 2: получить коллекцию продуктов, используя идентификатор категории

Анкит Шах
источник
79 долларов в Mageworx. Удивлен, пока нет бесплатной версии. Карта сайта очень важна для SEO.
rhand
Да не по умолчанию. Так что выбирайте из вариантов, которые вы предпочитаете
Ankit Shah
Magento предоставляет вариант карты сайта. Просьба проверить: belvg.com/blog/how-to-generate-a-sitemap-in-magento-2-0.html
Jai
это также поможет: magenticians.com/create-magento-2-sitemap
Jai
7

Начиная с версии 2.1.8 Magento, функциональность карты сайта включена в администратор по умолчанию.

  • Определите местоположение карты сайта: Маркетинг> SEO и поиск> Карта сайта . Вы также можете вручную создать файл карты сайта здесь.

  • Настройка параметров cron: Магазины> Конфигурация> Каталог> XML Sitemap

Вот инструкции по настройке повторяющихся заданий cron . Как и Magento 1.x, системный cron вызывает скрипт cron для Magento, который планирует задания.

nshiff
источник
1
Это должно быть правильным, установка сторонних модов должна быть последним средством для чего-то уже встроенного. Спасибо, ребята!
ajankuv
6

В Magento 2 нет html-карты сайта для категории и продуктов, как в magento 1.xx. Для этого вы можете создать страницу CMS, например, «sitemap /», и вызвать файл phtml.

который будет включать в себя пользовательский код для вызова всех категорий

На странице cms, позвоните по этому адресу:

{{block class="Magento\Framework\View\Element\Template" template="Magento_Theme::sitemap.phtml" name="customsitemap"}}

затем в phtml, вызовите это:

<?php 
$objectManagerr = \Magento\Framework\App\ObjectManager::getInstance();
$categoryFactory = $objectManagerr->create('Magento\Catalog\Model\ResourceModel\Category\CollectionFactory');
$categoryy = $categoryFactory->create()   
        ->addAttributeToSelect('*');
//->addAttributeToFilter('is_active',1)
//->addAttributeToFilter('is_anchor',1);
$excludedCategory = array(0);

?>

<ul class="sitelist">
<?php foreach ($categoryy as $cc): ?>
    <?php if(!in_array($cc->getId(), $excludedCategory)):?>
        <div class = "sitemap-list" style="float:left;">
        <?php if ($cc->getLevel()==2):?>
            <li>
                <h3><a href="<?php echo $cc->getUrl(); ?>"><?php echo $cc->getName(); ?></a></h3>
                <?php
                    if($cc->getChildren())
                    {
                        $sub = explode(",", $cc->getChildren());
                        $categoryFactorysub = $objectManagerr->create('Magento\Catalog\Model\ResourceModel\Category\CollectionFactory');
                        $categoryysub = $categoryFactorysub->create()   
                        ->addAttributeToSelect('*');
                        $subcat=$categoryysub->addFieldToFilter('entity_id', array('in' =>$sub));

                        //$subcat->printlogquery(true);exit;
                        ?>
                            <ul style="margin-left:15px;"> 
                        <?php foreach ($subcat as $subcategories){ ?>
                            <?php if ($subcategories->getLevel()==3):?>
                                <div class = "sitemap-list">
                                    <li>
                                        <?php if($subcategories->getImageUrl()): ?>
                                        <div class="mega-menu-ad">
                                            <img src="<?php echo ($subcategories->getImageUrl()); ?>" width="25" height="25" />
                                        </div>
                                        <?php endif; ?>

                                        <a href="<?php echo $subcategories->getUrl(); ?>"><?php echo $subcategories->getName(); ?></a>
                                        <?php
                                            if($subcategories->getChildren())
                                            {
                                                $subSubCat = explode(",", $subcategories->getChildren());
                                                $subsubCatFactory = $objectManagerr->create('Magento\Catalog\Model\ResourceModel\Category\CollectionFactory');
                                                $subSubCatCollection = $subsubCatFactory->create()
                                                ->addAttributeToSelect('*');
                                                $subSubCollection=$subSubCatCollection->addFieldToFilter('entity_id', array('in' =>$subSubCat));
                                                ?>
                                                    <ul style="margin-left:20px;">
                                                <?php foreach ($subSubCollection as $subSubcategories){ ?>
                                                        <div class = "sitemap-list">
                                                            <li>
                                                                <?php if($subSubcategories->getImageUrl()): ?>
                                                                <div class="mega-menu-ad">
                                                                    <img src="<?php echo ($subSubcategories->getImageUrl()); ?>" width="25" height="25" />
                                                                </div>
                                                                <?php endif; ?>
                                                                <a href="<?php echo $subSubcategories->getUrl(); ?>"><?php echo $subSubcategories->getName()?></a>
                                                            </li>
                                                        </div>
                                                <?php } ?> 
                                                    </ul>
                                        <?php   } ?>

                                    </li>
                                </div>
                            <?php endif;?>
                        <?php } ?>
                            </ul>
                <?php   } ?>

            </li>
        <?php endif;?>
        </div>
    <?php endif;?>
    <?php endforeach; ?>
    </ul>

Таким образом, вы можете легко создать URL карты сайта в Magento 2.

Абхинав Сингх
источник
Привет, я хочу создать свою собственную HTML-карту сайта. Можете ли вы помочь мне .. как использовать этот код. @Riddhish Bhayani
Спросите Байт
2

Вы можете разработать свой модуль, который расширит модуль Magento по умолчанию module-sitemap.

Вы можете на основе Sitemapмодели с \Magento\Sitemap\Model\Sitemap::generateXmlи _initSitemapItemsметодами.

2 подхода:

  1. Создать новый FO controllerи управлять дисплеем template/layoutи т. Д.

  2. Создайте статический файл в формате HTML, который будет обслуживаться Webserverпользовательским URL.

Это не будет очень сложно.

Спасибо,

Франк Гарнье
источник