# Plugin: Artikel laden im Cronjob - SW5.5

**URL:** <https://forum.shopware.com/t/plugin-artikel-laden-im-cronjob-sw5-5/64677>\
**Category:** Programmierung\
**Created:** [13. Februar 2020 um 10:28 UTC](https://forum.shopware.com/t/plugin-artikel-laden-im-cronjob-sw5-5/64677 "2020-02-13T10:28:08Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![MarcoHH](https://avatars.discourse-cdn.com/v4/letter/m/e8c25b/32.png) [@MarcoHH](https://forum.shopware.com/u/MarcoHH)\
**Post date:** [13. Februar 2020 um 10:28 UTC](https://forum.shopware.com/t/plugin-artikel-laden-im-cronjob-sw5-5/64677/1 "2020-02-13T10:28:08Z")

</div>

Moin,

folgende Aufgabenstellung: Ein **Cronjob** soll anhand von Ordernumber oder auch ID Daten (Hersteller, Artikelname, Bestellnummer,&nbsp;erstes Bild, Preis, Grundpreis, Link) zu einem **Artikeldetail** laden. Also im Prinzip ein Objekt wie $sArticle im Frontend.

Früher haben wir das so gelöst:

```
Shopware()->Modules()->Articles()->sGetArticleById($articleId);

```

Das geht ja an der Stelle leider nicht. Hat jemand eine Idee oder kann helfen? Ich bin dankbar für jede Anregung.

Beste Grüße aus Hamburg,  
Marco

&nbsp;

---

<div class="post-metadata">

**Author:** ![MarcoHH](https://avatars.discourse-cdn.com/v4/letter/m/e8c25b/32.png) [@MarcoHH](https://forum.shopware.com/u/MarcoHH)\
**Post date:** [3. September 2020 um 12:08 UTC](https://forum.shopware.com/t/plugin-artikel-laden-im-cronjob-sw5-5/64677/2 "2020-09-03T12:08:57Z")

</div>

Push…

---

<div class="post-metadata">

**Author:** ![ZeMi](https://avatars.discourse-cdn.com/v4/letter/z/a8b319/32.png) [@ZeMi](https://forum.shopware.com/u/ZeMi)\
**Post date:** [16. September 2020 um 07:48 UTC](https://forum.shopware.com/t/plugin-artikel-laden-im-cronjob-sw5-5/64677/3 "2020-09-16T07:48:19Z")

</div>

Der Zugriff auf die DI-Dienste sollte auch aus dem Cronjob heraus klappen.  
Ich würde dir die Verwendung der Article Resource von Shopware&nbsp;empfehlen:

```
$resource = Shopware()->Container()->get('shopware.api.article');

// 1. Rückgabe a) als Instanz der Klasse \Shopware\Models\Article\Article
$resource->setResultMode(\Doctrine\ORM\AbstractQuery::HYDRATE_OBJECT);

// 1. Rückgabe b) als assoziatives Array
$resource->setResultMode(\Doctrine\ORM\AbstractQuery::HYDRATE_ARRAY);

// 2. Filter a) Artikelnummer
$number = 'SW10001';
$product = $resource->getOneByNumber($number, [
    'language' => NULL,
    'considerTaxInput' => NULL,
]);

// 2. Filter b) Artikel-ID
$id = 1;
$product = $resource->getOne($id, [
    'language' => NULL,
    'considerTaxInput' => NULL,
]);

```

&nbsp;

---

<div class="post-metadata">

**Author:** ![ZeMi](https://avatars.discourse-cdn.com/v4/letter/z/a8b319/32.png) [@ZeMi](https://forum.shopware.com/u/ZeMi)\
**Post date:** [16. September 2020 um 08:21 UTC](https://forum.shopware.com/t/plugin-artikel-laden-im-cronjob-sw5-5/64677/4 "2020-09-16T08:21:04Z")

</div>

Schöner ist es natürlich via DependencyInjection:

services.xml:

MyCustomArticlePlugin\Subscriber\CronJobSubscriber.php:

```
articleResource = $articleResource;
    }

    /**
     * {@inheritdoc}
     */
    public static function getSubscribedEvents()
    {
        return [
            'Shopware_CronJob_MyCustomArticleJob' => 'onRun',
        ];
    }

    public function onRun(\Shopware_Components_Cron_CronJob $job)
    {
        //...

        // 1. Rückgabe a) als Instanz der Klasse \Shopware\Models\Article\Article
        $this->articleResource->setResultMode(\Doctrine\ORM\AbstractQuery::HYDRATE_OBJECT);

        // 1. Rückgabe b) als assoziatives Array
        $this->articleResource->setResultMode(\Doctrine\ORM\AbstractQuery::HYDRATE_ARRAY);

        // 2. Filter a) Artikelnummer
        $number = 'SW10001';
        $product = $this->articleResource->getOneByNumber($number, [
            'language' => NULL,
            'considerTaxInput' => NULL,
        ]);

        // 2. Filter b) Artikel-ID
        $id = 1;
        $product = $this->articleResource->getOne($id, [
            'language' => NULL,
            'considerTaxInput' => NULL,
        ]);

        if(null !== $product) {

          //...

        }

    }
}

```

&nbsp;
