นี่อาจไม่ตอบคำถามจริงๆ แต่มีโอกาสที่ถ้าคุณพลาดการเขียน URL ซ้ำคุณอาจนำผลิตภัณฑ์ของคุณออกจากกลุ่มผลิตภัณฑ์ และการเพิ่มข้อมูล URL \Magento\Catalog\Model\ResourceModel\Product\Collection::$_addUrlRewrite
ที่เขียนไม่ได้โดยอัตโนมัติในขณะที่คุณสามารถดูได้ใน
วิธีที่ฉันจัดการบังคับนอกจากของ URL เขียนใหม่คือการสร้างปลั๊กอินในวิธีการcreate()
\Magento\Catalog\Model\ResourceModel\Product\CollectionFactory
และทันทีที่รหัสของคุณ (หรือรหัสหลักของ Magento) ใช้โรงงานนี้เพื่อทำการติดตั้งชุดผลิตภัณฑ์ (และควรเป็นแนวทางปฏิบัติที่ดีที่สุด) ปลั๊กอินนี้บังคับ\Magento\Catalog\Model\ResourceModel\Product\Collection::$_addUrlRewrite
ให้true
ใช้
จากนั้นการเขียน URL ผลิตภัณฑ์ใหม่จะถูกเพิ่มไปยังผลิตภัณฑ์โดยไม่จำเป็นต้องวนซ้ำและโหลดซ้ำ มันจึงแก้ไขข้อเสียที่สมบูรณ์แบบที่ @ ราฟาเอลพูดถึง
นี่คือคำจำกัดความปลั๊กอิน XML (ในdi.xml
ไฟล์ของคุณ):
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
<type name="Magento\Catalog\Model\ResourceModel\Product\CollectionFactory">
<plugin name="your_plugin_unique_nane" type="Your\Plugin\Namespace\Plugin" />
</type>
</config>
และรหัสปลั๊กอิน:
namespace Your\Plugin\Namespace;
use Magento\Catalog\Model\ResourceModel\Product\Collection;
use Magento\Catalog\Model\ResourceModel\Product\CollectionFactory as CoreCollectionFactory;
class Plugin
{
/**
* @param CoreCollectionFactory $subject
* @param Collection $collection
* @return Collection
*/
public function afterCreate(CoreCollectionFactory $subject, Collection $collection)
{
$collection->addUrlRewrite();
return $collection;
}
}