คุณสามารถลองใช้ Magento Plugin เพื่อเพิ่มประสิทธิภาพการทำงานที่มีอยู่ของคลาสนามธรรมใด ๆ แม้ว่าขอบเขตของฟังก์ชันควรเป็นสาธารณะ เมื่อเร็ว ๆ นี้ผมทำงานเกี่ยวกับปัญหาเดียวกันที่ผมจำเป็นต้องยกเว้นผลิตภัณฑ์ที่มีแอตทริบิวต์ที่กำหนดเองได้รับมอบหมายจากรายการสินค้าที่ดูล่าสุด
ฉันใช้ปลั๊กอินสำหรับฟังก์ชั่นชื่อgetItemsCollectionจากคลาสที่ชื่อว่าMagento \ Reports \ Block \ Product \ AbstractProductโดยใช้ไวยากรณ์ต่อไปนี้:
ไฟล์: แอพ \ code \ Package \ Module \ etc \ frontend \ di.xml
<type name="Magento\Reports\Block\Product\AbstractProduct">
<plugin name="Package_Module::aroundGetItemsCollection" type="Package\Module\Block\Viewed" sortOrder="20"/>
</type>
ไฟล์: แอป \ รหัส \ แพคเกจ \ โมดูล \ บล็อก \ Viewed.php
public function afterGetItemsCollection(
$subject, $result
) {
$result = $result->addAttributeToFilter('skip_hire_product', [['neq' => 1], ['null' => true]], 'left');
return $result;
}
คุณสามารถใช้รอบและก่อนปลั๊กอินได้เช่นกัน หวังว่างานนี้สำหรับคุณ