เราสร้างหน้าแผนผังเว็บไซต์ใน Magento 2 เหมือนที่เรามีใน Magento 1 ได้อย่างไร
http://example.com/catalog/seo_sitemap/
เราสร้างหน้าแผนผังเว็บไซต์ใน Magento 2 เหมือนที่เรามีใน Magento 1 ได้อย่างไร
http://example.com/catalog/seo_sitemap/
คำตอบ:
Magento 2: โดยค่าเริ่มต้นจะไม่มี HTML Sitemap
สามารถใช้ส่วนขยายฟรี:
https://www.mageplaza.com/magento-2-seo-extension/
คุณมีตัวเลือกดังต่อไปนี้
หน้า CMS : สามารถอ้างถึงวีโอไอพี 1 บทความ/programming/5020257/creating-a-magento-sitemap-pageจากนั้นแปลงเป็นวีโอไอพี 2 จะได้ประโยชน์อะไรบ้างสำหรับหน้า CMS
สำหรับหมวดหมู่และหมวดหมู่ย่อย : รับหมวดหมู่ที่มีอยู่ทั้งหมดรายการประเภทย่อยในวีโอไอพี 2
สำหรับหมวดหมู่สินค้า : วีโอไอพี 2: รับชุดผลิตภัณฑ์โดยใช้รหัสหมวดหมู่
ในฐานะ Magento เวอร์ชัน 2.1.8 การทำงานของ sitemap จะรวมอยู่ในการดูแลระบบโดยค่าเริ่มต้น
กำหนดสถานที่ตั้งแผนผังเว็บ: ตลาด> SEO และการค้นหา> แผนผังเว็บไซต์ คุณสามารถสร้างไฟล์ sitemap ด้วยตนเองได้จากที่นี่
กำหนดการตั้งค่า cron: ร้านค้า> การกำหนดค่า> แคตตาล็อก> XML Sitemap
ต่อไปนี้เป็นคำแนะนำสำหรับการตั้งค่าที่เกิดขึ้นงาน cron เช่นเดียวกับ Magento 1.x cron ของระบบเรียกสคริปต์ cento ของ Magento ซึ่งกำหนดเวลางาน
Magento 2 ไม่มี html sitemap url สำหรับหมวดหมู่และผลิตภัณฑ์เช่นใน 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 ได้อย่างง่ายดาย
module-sitemap
คุณสามารถพัฒนาโมดูลของคุณซึ่งจะขยายโมดูลวีโอไอพีเริ่มต้น
คุณสามารถขึ้นอยู่กับSitemap
รุ่นด้วย\Magento\Sitemap\Model\Sitemap::generateXml
และ_initSitemapItems
วิธีการ
2 แนวทาง:
สร้างใหม่FO controller
และจัดการจอแสดงผลด้วยtemplate/layout
เป็นต้น
สร้างไฟล์คงที่ใน HTML ซึ่งจะให้บริการโดยWebserver
URL ที่กำหนดเอง
มันจะไม่ยากมาก
ขอบคุณ
ตรวจสอบปลั๊กอินนี้ได้ฟรีและสามารถปรับแต่งได้ที่ https://marketplace.magento.com/vsourz-html-sitemap.html
คุณสามารถใช้ส่วนขยาย Sitemap ( https://marketplace.magento.com/fme-advanced-sitemap-generator.html ) ซึ่งจะช่วยให้คุณทำงานได้สำเร็จโดยไม่ต้องเขียนโปรแกรมหรือดูบทความนี้: https : //www.fmeextensions.com/blog/generate-google-optimized-sitemap-xml-in-magento-2/