Startseite
  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche
Startseite › Forum › Drupalcenter.de › Module ›

[gelöst] Automatisierter Aufruf von Feeds-Imports mit Zusatzaufgaben

Eingetragen von montviso (1858)
am 17.02.2013 - 13:46 Uhr in
  • Module
  • Drupal 7.x

Hallo,
ich habe mehrere Feeds-Importer eingerichtet.
Die werden momentan per Hand aufgerufen über den entsprechenden Menüpunkt.
Das klappt soweit ganz gut, soll aber automatisiert werden, so daß einmal in der Nacht ein Import-Vorgang abläuft.

Das wäre ja sicher kein Problem, mit "Periodic import" alle 1 Tage.

Aber es soll noch folgendes passieren:
Bei den Importen handelt es sich um Affiliate-Daten-Feeds, also Produkte mit Bild, Name, Beschreibung, Preis und Link in den Online-Shop eines Händer-Partners.

Um sicherzustellen, daß in meiner Datenbank keine Produkte angezeigt werden, die im Händler-Shop nicht mehr vorhanden sind, möchte ich vor jedem Import-Vorgang dieses Händlers alle Nodes vom Typ 'Produkt' mit Referenz auf den Händler, der gleich importiert werden soll, auf Nicht veröffentlicht setzen.
Beim Importvorgang gibt es ein Feld, das dann alle Produkte, dieses Händlers, die bereits vorhanden sind (Artikelnummer) wieder auf Status 1 setzt, also Veröffentlicht.

Ich habe noch keinen rechten Plan, wie ich diese Aufgabe lösen kann.

Mein erster Gedanke war, das über Rules zu machen und es gibt ja sogar ein Rules Feeds-Modul.
Dort sehe ich aber keinen passenden Event, dem ich die Aktion "deaktiviere alle nodes vom Händler xy" anhängen könnte.

Alternative wäre:
Ein Modul schreiben, wo ich in einer Schleife alle anstehenden Importvorgänge aufrufe und jeweils vorher den Update auf die Produkte durchführe.
Es gibt bereits einen Inhaltstyp Händler mit der ID, auf die in den Produkt-Nodes referenziert wird und der URL, bei der die Produktdaten liegen, die importiert werden sollen.
Vermutlich müßte ich mich dann an dieser Anleitung orientieren:
http://nodesforbreakfast.com/article/2012/09/23/programmatically-execute...

Habe ich eine weitere Lösungsmöglichkeit übersehen?
Könnte ich das doch mit Rules machen?

‹ Webforms-Ergebnisse mit Excel auslesen [gelöst] Automatisierter Aufruf von Feeds-Imports mit Zusatzaufgaben ›
  • Anmelden oder Registrieren um Kommentare zu schreiben

schau dir mal feeds_tamper an

Eingetragen von ronald (3829)
am 17.02.2013 - 19:24 Uhr

damit kannst du jedes beliebige Feld vor dem Import manipulieren.
Damit sollte eigentlich (fast) jede "Schweinerei" möglich sein ;-)

Grüße
Ronald

  • Anmelden oder Registrieren um Kommentare zu schreiben

Ronald, Du ahnst ja gar

Eingetragen von montviso (1858)
am 17.02.2013 - 20:13 Uhr

Ronald, Du ahnst ja gar nicht, welche Schweinereien ich mit Tamper schon alles mache ;-)

Im konkreten Fall funktioniert das nicht, oder ich habe einen Knoten im Hirn, was ja sein kann...

Noch mal worum es geht:

Ich möchte v o r dem Import alle Nodes, die zu diesem Import (also einem bestimmten Händler-Daten-Feed) gehören auf nicht veröffentlicht setzen.
Beim Import werden dann die jeweils mitgelieferten Datensätze wieder auf veröffentlicht gesetzt.

Es passiert ja entweder ein Insert, wenn der Datenstatz (also das Produkt) neu ist, oder ein Update, wenn diese Artikelnummer bereits vorhanden ist.
(Diese wird über GUID als unique gekennzeichnet).

Ich kann ja beim Import keinen Datensatz manipulieren (auf nichtveröffentlicht setzen), der im Feed gar nicht vorkommt.

Noch mal worum es geht:
Es handelt sich um eine Schnittstelle zu einem Online-Shop.
In meiner Drupal-Datenbank sollen keine Produkte angezeigt werden, die der Online-Shop evt. aus dem Sortiment genommen hat.
Geliefert werden im Feed nur aktive Produkte.

Geht doch nicht mit Tamper, oder?

LG Regina Oswald
-------------------------
Montviso - Internetdienstleistungen
http://www.montviso.de

  • Anmelden oder Registrieren um Kommentare zu schreiben

daten, die der feed nicht kennt,

Eingetragen von ronald (3829)
am 17.02.2013 - 21:07 Uhr

Kann er logischerweise nicht manipulieren.
Hier würde ich versuchen mit rules anzusetzen.
Die rule müsste entweder zeitgesteuert sicher vor dem import laufen, oder vom import getriggert werden.
Dabei muss aber sichergestellt werden, dass der import erst anläuft, wenn der deaktivierungsprozess fertig ist.

Nicht ganz trivial ;)

Grüße
Ronald

  • Anmelden oder Registrieren um Kommentare zu schreiben

Ja, die Rules-Lösung gefällt

Eingetragen von montviso (1858)
am 17.02.2013 - 21:28 Uhr

Ja, die Rules-Lösung gefällt mir nicht, weil ich ja eine flexible Lösung möchte, die einmal eingerichtet für alle Importer funktioniert.

Ich versuche mich gerade an einer Batch-Lösung nach diesem Strickmuster:

  $feed = 'myimporter';
  $feedSource = feeds_source($feed);
 
  $config = $feedSource->getConfig();
  $config['FeedsHTTPFetcher']['source'] = 'myfilename.csv';
  $feedSource->setConfig($config);
  $feedSource->save();
  $batch = array(
        'title' => t('Importing feeds'),
        'operations' => array(
          array('feeds_batch', array('import', $feed, 0)),
        ),
        'progress_message' => t('Current: @current | Remaining:
          @remaining | Total: @total | Percentage: @percentage | Estimate:
          @estimate | Elapsed: @elapsed'),
      );
      batch_set($batch);
     batch_process('redirect-url');

Den Code habe ich einfach in eine Testseite geschrieben, die ich via URL mit admin-Rechten aufrufe.
Um spätere Integration in einem Modul und Aufruf via Cron muß ich mich noch separat kümmern.

Der Code soll dann in einer Schleife für jeden Importer aufgerufen werden und vorher wird die Manipulation an den Nodes für diesen Händler passieren.

LG Regina Oswald
-------------------------
Montviso - Internetdienstleistungen
http://www.montviso.de

  • Anmelden oder Registrieren um Kommentare zu schreiben

Inzwiswchen habe ich das

Eingetragen von montviso (1858)
am 19.02.2013 - 09:33 Uhr

Inzwiswchen habe ich das Script in ein eigenes Modul gelegt mit einem hook_cron -Aufruf

function feedsimport_cron() {
//Tue, was Du nicht lassen kannst
}

Den Cron habe ich mit elysia_cron konfiguriert.

Ein paar Feinheiten funktionieren noch nicht, wie gewünscht (timeout).

Ich bin aber zuversichtlich, daß ich das auch noch rausfummel und setze den Thread deshalb auf gelöst.

LG Regina Oswald
-------------------------
Montviso - Internetdienstleistungen
http://www.montviso.de

  • Anmelden oder Registrieren um Kommentare zu schreiben

Benutzeranmeldung

  • Registrieren
  • Neues Passwort anfordern

Aktive Forenthemen

  • Notificationsnicht immer und gesammelt bei Update
  • Meldung zu Token im Statusbericht
  • Modulupdate per Webinterace scheitert an authorize.php und access denied für Admin-User
  • Fehlermeldung: Deprecated function
  • Warning: call_user_func() expects parameter 1 to be a valid callback, class 'Drupal\node\Entity\Node' does not have a method 'ge
  • Versenden von Anfragen per Webform
  • Goodbye Online Drupal Meetup Germany - Hello Drupal DACH Online Meetup!
  • Übersetzte Felder bei Inhaltstyp automatisch übernehmen
  • Content Ex-/Import
  • RESTful Path request will nicht
  • Wer ist online Block
  • Doppelte Anzeige von Node im View
Weiter

Neue Kommentare

  • Self-referencing
    vor 16 Stunden 13 Minuten
  • settings.php
    vor 16 Stunden 49 Minuten
  • Kulturmensch schrieb Prima
    vor 17 Stunden 46 Minuten
  • Metatag
    vor 17 Stunden 56 Minuten
  • Links
    vor 17 Stunden 15 Minuten
  • Wenn Du nach der
    vor 19 Stunden 1 Minute
  • Gut zu wissen. Demnächst
    vor 1 Tag 11 Stunden
  • Token Fehler behoben
    vor 1 Tag 11 Stunden
  • Du hast völlig recht, da habe
    vor 1 Tag 16 Stunden
  • Link 404
    vor 1 Tag 20 Stunden

Statistik

Beiträge im Forum: 245975
Registrierte User: 18827

Neue User:

  • finnster
  • Damian1802
  • MrWebMV

» Alle User anzeigen

User nach Punkten sortiert:
wla9010
stBorchert6003
quiptime4972
Tobias Bähr4019
bv3916
ronald3829
md3717
Thoor3678
Alexander Langer3416
Exterior2903
» User nach Punkten
Zur Zeit sind 0 User und 7 Gäste online.

Hauptmenü

  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche

Quicklinks I

  • Infos
  • Drupal Showcase
  • Installation
  • Update
  • Forum
  • Team
  • Verhaltensregeln

Quicklinks II

  • Drupal Jobs
  • FAQ
  • Drupal-Kochbuch
  • Best Practice - Drupal Sites - Guidelines
  • Drupal How To's

Quicklinks III

  • Tipps & Tricks
  • Drupal Theme System
  • Theme Handbuch
  • Leitfaden zur Entwicklung von Modulen

RSS & Twitter

  • Drupal Planet deutsch
  • RSS Feed News
  • RSS Feed Planet
  • Twitter Drupalcenter
Drupalcenter Team | Impressum & Datenschutz | Kontakt
Angetrieben von Drupal | Drupal is a registered trademark of Dries Buytaert.
Drupal Initiative - Drupal Association