Magento 2: Jak mogę uzyskać mapę witryny w Magento 2?

9

Jak tworzymy stronę mapy witryny w Magento 2 tak samo jak w Magento 1?

http://example.com/catalog/seo_sitemap/
Ashish Jagnani
źródło
1
Mówiąc o XML (sitemap.xml) / HTML Sitemap? fastcomet.com/tutorials/magento2/sitemap
Ankit Shah
Chcę mapę witryny HTML taką samą jak w Magento1.x
Ashish Jagnani
Aby wygenerować nową mapę witryny dla swojej witryny, skorzystaj z tej pomocy, możesz uzyskać pomoc emagentosupport.com/2018/12/…
Denish Vachhani,

Odpowiedzi:

6

Magento 2: Domyślnie nie zapewnia mapy witryny HTML.

Można użyć darmowego rozszerzenia:

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

Masz następujące opcje

Strony CMS : można odnieść się do Magento 1 Artykuł /programming/5020257/creating-a-magento-sitemap-page Następnie przekonwertuj go na Magento 2, co pomoże w tworzeniu stron CMS

Dla kategorii i podkategorii : Uzyskiwanie wszystkich dostępnych kategorii, listy podkategorii w magento 2

Dla kategorii Produktów : Magento 2: pobierz kolekcję produktów przy użyciu identyfikatora kategorii

Ankit Shah
źródło
79 dolarów w Mageworx. Zaskoczony, że nie ma jeszcze darmowej wersji. Mapa strony jest bardzo ważna pod względem SEO.
rhand
Tak nie jest domyślnie. Wybierz więc preferowane opcje
Ankit Shah
Magento zapewnia opcję mapy witryny. proszę sprawdzić: belvg.com/blog/how-to-generate-a-sitemap-in-magento-2-0.html
Jai
pomoże to również: magenticians.com/create-magento-2-sitemap
Jai
7

Począwszy od Magento w wersji 2.1.8 funkcja map witryn jest domyślnie włączona przez administratora.

  • Zdefiniuj lokalizację mapy witryny: Marketing> SEO i wyszukiwanie> Mapa witryny . Możesz również ręcznie wygenerować plik mapy witryny z tego miejsca.

  • Skonfiguruj ustawienia crona: Sklepy> Konfiguracja> Katalog> Mapa witryny XML

Oto instrukcje dotyczące konfigurowania cyklicznych zadań cron . Podobnie jak Magento 1.x, cron systemu wywołuje skrypt cron Magento, który planuje zadania.

nshiff
źródło
1
To powinno być poprawne, instalowanie modów stron trzecich powinno być ostatecznością dla czegoś już wbudowanego. Dzięki chłopaki!
ajankuv
6

Magento 2 nie ma adresu URL mapy witryny HTML dla kategorii i produktów takich jak w Magento 1.xx. W tym celu możesz utworzyć stronę CMS, taką jak „mapa witryny /” i wywołać plik phtml

który będzie zawierał niestandardowy kod do wywoływania wszystkich kategorii

Na stronie cms nazwij to:

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

następnie w phtml, wywołaj to:

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

W ten sposób możesz łatwo utworzyć adres URL mapy witryny w Magento 2.

Abhinav Singh
źródło
Cześć, chcę utworzyć własną mapę witryny HTML. Czy możesz mi pomóc ... jak korzystać z tego kodu? @Riddhish Bhayani
Ask Bytes
2

Możesz rozwinąć swój moduł, który rozszerzy domyślny moduł Magento module-sitemap.

Możesz bazować na Sitemapmodelu z metodami \Magento\Sitemap\Model\Sitemap::generateXmli _initSitemapItems.

2 podejścia:

  1. Utwórz nowy FO controlleri zarządzaj wyświetlaczem za pomocą template/layoutitp.

  2. Wygeneruj plik statyczny w HTML, który będzie obsługiwany przez Webserverniestandardowy adres URL.

To nie będzie bardzo trudne.

Dzięki,

Franck Garnier
źródło