-1

Magento で cron ジョブを段階的に設定するにはどうすればよいですか。日付が設定されている属性がある場合、その日が過ぎた場合に cron ジョブで製品を無効にしたい...

4

1 に答える 1

4

1)カスタムモジュールを作成します。これには多くのガイドがあります。または、モジュールクリエーターを使用して開始します。

2)モジュール構成にCronジョブセットアップを追加しました

config.xml

...
    <crontab>
        <jobs>
            <mymodule_disable>
                <schedule>
                    <!-- every 10 min -->
                    <cron_expr>*/10 * * * *</cron_expr>
                </schedule>
                <run>
                    <model>mymodule/Scheduler::disable</model>
                </run>
            </mymodule_disable>
        </jobs>
    </crontab>

</config>

次に、タスクを処理するクラスを作成します(modulename / Model / Scheduler.php)

Scheduler.php

<?php
class Mymodule_Model_Scheduler
{
    /**
     * Disable prodcuts for us
     */
    public static function disable()
    {
         // This will be run every 10 minutes, we want to get applicable products
         // you will need to customize the filter for what you need, subtracting
         // or adding date values etc.. you get the idea :)
         $date = Mage::getModel('core/date')->gmtDate(); // add/subtract etc
         $collection = Mage::getModel('catalog/product')->getCollection();
         $collection->addfieldtofilter('custom_date_attr', array(
             array('to' => $date),
             //array('gteq' => $date)
         ));
         foreach($collection as $product) {
             $product->setStatus(Mage_Catalog_Model_Product_Status::STATUS_DISABLED);
             $product->save();
         }
    }
}

次に、Magentosスケジューラを実行するためのcronジョブを設定する必要があります。例:

*/10 * * * *  php -f /path/to/magento/cron.php
于 2013-03-08T14:01:09.073 に答える