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/

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


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


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.


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.


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,



Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.