Comment nous créons la page du plan du site dans Magento 2 comme celle que nous avons dans Magento 1?
http://example.com/catalog/seo_sitemap/
Comment nous créons la page du plan du site dans Magento 2 comme celle que nous avons dans Magento 1?
http://example.com/catalog/seo_sitemap/
Réponses:
Magento 2: par défaut, ne fournit pas de sitemap HTML.
Peut utiliser l'extension gratuite:
https://www.mageplaza.com/magento-2-seo-extension/
Vous avez les options suivantes
Pages CMS : peut faire référence à l'article de Magento 1 /programming/5020257/creating-a-magento-sitemap-page puis le convertir en Magento 2 va vous apporter quelques conseils utiles pour les pages CMS
Pour les catégories et sous-catégories : Obtenir toutes les catégories disponibles, liste des sous-catégories dans magento 2
Pour les catégories de produits : Magento 2: obtenez la collection de produits en utilisant l'identifiant de catégorie
Depuis Magento version 2.1.8, la fonctionnalité du plan du site est incluse par défaut dans l'administrateur.
Définissez l'emplacement du plan du site: Marketing> SEO et recherche> Plan du site . Vous pouvez également générer manuellement le fichier sitemap à partir d'ici.
Configurer les paramètres cron: magasins> configuration> catalogue> plan du site XML
Voici les instructions de configuration des tâches cron récurrentes . Tout comme Magento 1.x, le cron du système appelle le script cron Magento, qui planifie les travaux.
Magento 2 n'a pas d'URL de sitemap html pour la catégorie et les produits comme dans magento 1.xx. Pour cela, vous pouvez créer une page CMS comme 'sitemap /' et appeler un fichier phtml
qui comprendra le code personnalisé pour appeler toutes les catégories
Dans la page cms, appelez ceci:
{{block class="Magento\Framework\View\Element\Template" template="Magento_Theme::sitemap.phtml" name="customsitemap"}}
puis en phtml, appelez ça:
<?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>
De cette façon, vous pouvez facilement créer une URL de plan de site dans Magento 2.
Vous pouvez développer votre module qui étendra le module Magento par défaut module-sitemap
.
Vous pouvez vous baser sur le Sitemap
modèle avec les méthodes \Magento\Sitemap\Model\Sitemap::generateXml
et _initSitemapItems
.
2 approches:
Créez un nouveau FO controller
et gérez l'affichage avec template/layout
etc.
Générez un fichier statique en HTML qui sera servi par Webserver
une URL personnalisée.
Ce ne sera pas très difficile.
Merci,
Vérifiez ce plugin, il est gratuit et personnalisable https://marketplace.magento.com/vsourz-html-sitemap.html
Vous pouvez soit utiliser l'extension Sitemap ( https://marketplace.magento.com/fme-advanced-sitemap-generator.html ) qui vous aidera à faire le travail sans programmation OU vous pouvez simplement consulter cet article: https : //www.fmeextensions.com/blog/generate-google-optimized-sitemap-xml-in-magento-2/