/ / Magento 2 плагін afterGetSpecialPrice не змінить спеціальну ціну в WEBAPI - плагіни, модуль, magento2

Плагін Magento 2 afterGetSpecialPrice не змінить спеціальну ціну в WEBAPI - плагіни, модуль, magento2

Я реалізував користувальницький плагін Magento 2, щоб змінити спеціальну ціну на деякі продукти програмно. Це було успіхом для фронтенду, але все ж у webapi я отримую оригінальну спеціальну ціну.

di.xml

        <?xml version="1.0" ?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
<preference for="VendorModuleApiPromotionManagementInterface" type="VendorModuleModelPromotionManagement"/>

<type name="MagentoCatalogModelProduct">
<plugin name="change_product" type="VendorModulePluginProduct" sortOrder="1" disabled="false"/>
</type>

</config>

VendorModulePluginProduct.php

afterGetSpecialPrice () не викликається при використанні webapi

.....
public function afterGetSpecialPrice(MagentoCatalogModelProduct $subject, $result)
{
if(isset($this->data)){
return $this->data["special_price"]; // $60.00
}
return $result; // $70.00
}
.....

результат на головній сторінці: 60,00 дол. США, результат у вебапі: $ 70,00 (оригінальна спеціальна ціна)

Що може бути причиною?

Відповіді:

0 для відповіді № 1

за зразком коду magento2-зразки необхідно використовувати метод afterGetList у класі плагінів.

di.xml

<type name="MagentoCatalogApiProductRepositoryInterface">
<plugin name="change_special_price" type="VendorModulePluginRepository"/>
</type>

VendorModulePluginRepository.php

<?php
namespace VendorModulePlugin;
class Repository
{
public function afterGetList(MagentoCatalogApiProductRepositoryInterface $subject,MagentoFrameworkApiSearchResults $searchResult) {
foreach ($searchResult->getItems() as $product) {
$product->setData("special_price",60.0000); //custom special price
}
return $searchResult;
}
}