Lokaler Zugriff auf die API

Hallo Leute, nach mehreren Stunden in der Shopwarewiki bin ich leider immer noch nicht sehr viel schlauer geworden. Ich möchte ein Plugin erstellen welches ein Cronjob registriert. Beim Ausführen soll dieser die Artikel mit einem bestimmten Hersteller laden und danach mit einer anderen Datei vergleichen. Das erstellen eines Cronjobs und den Zugriff auf eine andere Datei war kein Hexenwerk. Der Zugriff auf die Shopware Artikel bekomme ich leider nicht hin. Ebenfalls habe ich noch nicht ganz verstanden wie man am Besten so ein Plugin aufbau. Für den Anfang wolle ich alles in die Bootstrap.php schreiben. Mein Code: <?php class Shopware_Plugins_Backend_SWINXXXSynchronisationPlugin_Bootstrap extends Shopware_Components_Plugin_Bootstrap { public function getCapabilities() { return array( 'install' => true, 'update' =\> true, 'enable' =\> true ); } public function getLabel() { return 'XXXX Synchronisation'; } public function getVersion() { return '1.0.9'; } public function getInfo() { return array( 'version' =\> $this-\>getVersion(), 'label' =\> $this-\>getLabel(), 'author' =\> 'Test User', 'description' =\> 'Test Beschreibung', 'support' =\> '', 'link' =\> '' ); } public function install() { $this-\>registerCronJobs(); return true; } public function update() { return true; } private function registerCronJobs() { $this-\>createCronJob('SWINXXXSynchronisationPlugin','XXXSynchronisationCron',86400,true); $this-\>subscribeEvent('Shopware\_CronJob\_XXXSynchronisationCron','onRunXXXSynchronisationCronJob'); } public function onRunXXXSynchronisationCronJob(Shopware\_Components\_Cron\_CronJob $job) { //Initializes the article resource $articleResource = \Shopware\Components\Api\Manager::getResource('Article'); $article = $this-\>articleResource-\>getOne(3); echo 'TEST'; return true; } } Bitte um Hilfe. Ebenfalls würde mich interessieren wie Ihr Objekte auslagert, in Controllern? Ein sehr einfaches Beispiel wäre gut.

Kann keiner helfen?

Hallo! Was ist denn jetzt genau die Frage :slight_smile: Klappt die Ausführung in deiner Cronjob-Funktion? Wenn ja musst Du ja “nur” noch die Logik deiner Artikelupdates implementieren. [quote=“bikerstock”]Ebenfalls würde mich interessieren wie Ihr Objekte auslagert, in Controllern? Ein sehr einfaches Beispiel wäre gut.[/quote] Ich lager eigentlich fast alles aus. Die Bootstrap ist nur für das oberflächliche zuständig (Konfiguration, Datenbank, Events/Hooks registrieren) und startet die eigentlich relevanten ausgelagerten Stellen. Dabei sind alle Komponenten (Models, Views, Controllers) bei mir ausgelagert. Relevant ist also deinen Namespace zu registrieren, das müsstest du auch in vielen anderen Plugins vorfinden (in der Bootstrap) z.B. public function afterInit() { $this-\>Application()-\>Loader()-\>registerNamespace( 'Shopware\Components', $this-\>Path() . 'Components/' ); } Ich packe meine externe Sachen in den Components Namespace, da müsste es aber auch Leute geben die Ihre Codes woanders strukturieren. Trotzdem, zum Beispiel von oben: namespace Shopware\Components\SwagFoo\Bar; mit einer Beispielklasse class Foobar {} in deinem Plugin unter … Components/SwagFoo/Bar/Foobar.php … kannst Du dann normal in deinem Code verwenden (wenn woanders gelagert natürlich mit einer use- Anweisung) Viel Erfolg, Niklas

1 „Gefällt mir“

Vielen Dank. Für alle anderen hier noch ein weiteres Beispiel: http://forum.shopware.com/post102480.html