Magento 2.3.3 установить продукт в качестве выпуска с новой датой
У меня возникла проблема с Magento 2.3.3, и на сегодняшний день я настроен как новый.
Хотя я установил дату в продукте в разделе "Администратор", если я вернусь к продукту и нажму "Сохранить", дата настройки продукта как "новый" исчезнет. Это действительно странно. Поэтому я решил создать простой модуль, чтобы сохранить эту дату непосредственно перед сохранением продукта. Также я вставил функцию, чтобы дать товар, если дата не установлена 90 дней + дата, когда вы сохраняете. Но это не работает, и я не смотрите любые ошибки в журналах
Мой код:
namespace MyModule\DatesFix\Plugin\Backend\Magento\Catalog\Model;
/**
* Class Product
* @package Mymodule\DatesFix\Plugin\Backend\Magento\Catalog\Model
*/
class Product
{
/**
* Before save
*
* @param \Magento\Catalog\Model\Product $subject
*
*
* @return array
*/
public function beforeBeforeSave(
\Magento\Catalog\Model\Product $subject
) {
$newDateTo = date('Y-m-d h:m:s', strtotime("+90 day"));
$from = $subject->getNewsFromDate();
$to = $subject->getNewsToDate();
if ($from && $to) {
$subject->setNewsToDate($newDateTo);
}
return [];
}
}
1 answers
Вам необходимо создать пользовательское расширение со следующими параметрами:
MyModule/DatesFix/registration.php
<?php
\Magento\Framework\Component\ComponentRegistrar::register(
\Magento\Framework\Component\ComponentRegistrar::MODULE,
'MyModule_DatesFix',
__DIR__
);
MyModule/DatesFix/etc/module.xml
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Module/etc/module.xsd">
<module name="MyModule_DatesFix" setup_version="1.0.0"></module>
</config>
MyModule/DatesFix/etc/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">
<type name="Magento\Catalog\Model\Product">
<plugin disabled="false" name="new_to_datefix" sortOrder="10" type="MyModule\DatesFix\Plugin\NewToDate"/>
</type>
</config>
В приведенном выше файле di.xml
мы объявили name="Magento\Catalog\Model\Product"
, это относится к классу, метод которого мы собираемся переопределить.
Таким образом, вы можете найти все связанные методы, которые вы можете использовать, перейдя в файл vendor/module-catalog/Model/Product.php
.
MyModule/DatesFix/Plugin/NewToDate.php
<?php
namespace MyModule\DatesFix\Plugin;
class NewToDate
{
public function beforeSave($subject){
$new_to_date = date('m/d/Y',strtotime("+90 days"));
if (!$subject->getNewsToDate()) {
$subject->setNewsToDate($new_to_date);
}
}
}