Magento 2: Wie kann ich die Sitemap in Magento 2 erhalten?

9

Wie erstellen wir die Sitemap- Seite in Magento 2 wie in Magento 1?

http://example.com/catalog/seo_sitemap/
Ashish Jagnani
quelle
1
Apropos XML (sitemap.xml) / HTML-Sitemap? fastcomet.com/tutorials/magento2/sitemap
Ankit Shah
Ich möchte die HTML-Site-Map wie in Magento1.x
Ashish Jagnani
Um eine neue Sitemap für Ihre Website zu erstellen, beziehen Sie sich möglicherweise auf diese Hilfe. Emagentosupport.com/2018/12/…
Denish Vachhani

Antworten:

6

Magento 2: Standardmäßig wird keine HTML-Sitemap bereitgestellt.

Kann die kostenlose Erweiterung verwenden:

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

Sie haben folgende Möglichkeiten

  • Verwenden Sie ein Plugin wie http://www.mageworx.com/magento-2-sitemap-extension.html
  • CMS-Seite erstellen und Links setzen
  • Erstellen Sie ein benutzerdefiniertes Modul zum programmgesteuerten Generieren von HTML-Sitemap
  • Verwenden Sie Ihren Modul / CMS-Link, um darauf zuzugreifen

CMS-Seiten : Kann auf Magento 1 verweisen Artikel /programming/5020257/creating-a-magento-sitemap-page Wenn Sie es dann in Magento 2 konvertieren, erhalten Sie einige hilfreiche Informationen für CMS-Seiten

Für Kategorien und Unterkategorien : Alle verfügbaren Kategorien abrufen, Unterkategorieliste in Magento 2

Für Kategorien Produkte : Magento 2: Produktkollektion mit Kategorie-ID abrufen

Ankit Shah
quelle
79 Dollar bei Mageworx. Überrascht gibt es noch keine kostenlose Version. Sitemap ist in Bezug auf SEO ziemlich wichtig.
Hand
Ja, nicht standardmäßig. Wählen Sie also aus den Optionen, die Sie bevorzugen
Ankit Shah
Magento bietet eine Sitemap-Option. Bitte überprüfen Sie: belvg.com/blog/how-to-generate-a-sitemap-in-magento-2-0.html
Jai
Dies wird auch helfen: magenticians.com/create-magento-2-sitemap
Jai
7

Ab Magento Version 2.1.8 ist die Sitemap-Funktionalität standardmäßig im Administrator enthalten.

  • Definieren Sie den Standort der Sitemap: Marketing> SEO & Suche> Sitemap . Sie können die Sitemap-Datei auch manuell von hier aus generieren.

  • Konfigurieren Sie die Cron-Einstellungen: Stores> Configuration> Catalog> XML Sitemap

Hier finden Sie Anweisungen zum Einrichten wiederkehrender Cron-Jobs . Genau wie Magento 1.x ruft der Cron des Systems das Magento Cron-Skript auf, das Jobs plant.

nshiff
quelle
1
Dies sollte die richtige sein, die Installation von Mods von Drittanbietern sollte ein letzter Ausweg für etwas sein, das bereits eingebaut ist. Danke Jungs!
Ajankuv
6

Magento 2 hat keine HTML-Sitemap-URL für Kategorien und Produkte wie in Magento 1.xx. Dazu können Sie eine CMS-Seite wie 'sitemap /' erstellen und eine HTML-Datei aufrufen

Dies beinhaltet den benutzerdefinierten Code zum Aufrufen aller Kategorien

Rufen Sie auf der cms-Seite Folgendes auf:

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

Rufen Sie dann in phtml Folgendes auf:

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

Auf diese Weise können Sie im Magento 2 einfach eine Sitemap-URL erstellen.

Abhinav Singh
quelle
Hallo, ich möchte meine eigene HTML-Sitemap erstellen. Können Sie mir bitte helfen? Wie verwende ich diesen Code? @ Riddhish Bhayani
Fragen Sie Bytes
2

Sie können Ihr Modul entwickeln, das das Standard-Magento-Modul erweitert module-sitemap.

Sie können basierend auf dem SitemapModell mit den Methoden \Magento\Sitemap\Model\Sitemap::generateXmlund _initSitemapItems.

2 Ansätze:

  1. Erstellen Sie eine neue FO controllerund verwalten Sie die Anzeige mit template/layoutetc.

  2. Generieren Sie eine statische Datei in HTML, die von Webservereiner benutzerdefinierten URL bereitgestellt wird.

Es wird nicht sehr schwierig sein.

Vielen Dank,

Franck Garnier
quelle