এটি সত্যিই প্রশ্নের উত্তর নাও দিতে পারে তবে সম্ভাবনাগুলি হ'ল, আপনি যদি ইউআরএল পুনর্লিখনটি মিস করেন তবে আপনি আপনার পণ্যটি কোনও পণ্য সংগ্রহের বাইরে নিয়ে যেতে পারেন। এবং ইউআরএল পুনর্লিখন তথ্য যুক্ত করা আপনি দেখতে পারেন হিসাবে স্বয়ংক্রিয় হয় না \Magento\Catalog\Model\ResourceModel\Product\Collection::$_addUrlRewrite
।
ইউআরএল পুনর্লিখনের জন্য আমি যেভাবে জোর করে পরিচালনা করেছি তা হল এর create()
পদ্ধতিতে একটি প্লাগইন তৈরি করা \Magento\Catalog\Model\ResourceModel\Product\CollectionFactory
। এবং যত তাড়াতাড়ি আপনার কোড (অথবা Magento কোর কোড) হিসাবে (এবং এটি করা উচিত সর্বোত্তম কার্যাভ্যাস হিসাবে) এই প্লাগিন বাহিনীর একটি পণ্য সংগ্রহ instanciating এই কারখানা ব্যবহার \Magento\Catalog\Model\ResourceModel\Product\Collection::$_addUrlRewrite
করার true
।
তারপরে, পণ্যগুলির ইউআরএল পুনর্লিখনগুলি সফলভাবে পণ্যগুলিতে সেগুলিতে লুপ না করে এবং তাদের পুনরায় লোড করার পরে যুক্ত করা হয়। এটি @ রাফেল যে কথা বলেছিল সেই পারফেক্টটিকে সংশোধন করে।
এখানে প্লাগইন এক্সএমএল সংজ্ঞা (আপনার 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;
}
}