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 [];
    }
}
Author: G. G., 2019-11-18

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); 
        }
    }
}
 1
Author: Moneef Alnahdi, 2019-11-18 18:39:14