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

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

Eingetragen von montviso (2115)
am 17.02.2013 - 14: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 (3845)
am 17.02.2013 - 20: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 (2115)
am 17.02.2013 - 21: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 (3845)
am 17.02.2013 - 22: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 (2115)
am 17.02.2013 - 22: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 (2115)
am 19.02.2013 - 10: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

  • Matomo(?) in Seite, aber Deinstalliert!
  • Upgrade Drupal 7 auf Drupal 9 / Inhalt erstellen zeigt nur Fehler an
  • Olivero veraendern
  • Fehlermeldung nach Update auf Drupal 10
  • Wie Button erstellen?
  • footnotes bei D10 und CKE5
  • ckeditor Bilder skalieren
  • Bild in welcher Form die Beschriftung!
  • Drupal 10 und Adaptive Theme 2.0
  • Drupal Commerce: Deprecated Module deinstallieren: CKEditor, RDF
  • [gelötst] Migration einer Seite von D8.9 auf 9 resp 10
  • Theme Olivero - Rand entfernen?
Weiter

Neue Kommentare

  • @onkel Bob,Erst mal
    vor 5 Tagen 10 Stunden
  • Prinzipiell geht das schon.
    vor 5 Tagen 11 Stunden
  • Rubi_2021 schriebWie genau
    vor 1 Woche 4 Tagen
  • Ok, war ein Versuch. ;-) Kann
    vor 1 Woche 4 Tagen
  • Danke
    vor 1 Woche 4 Tagen
  • Redest Du von dem
    vor 1 Woche 4 Tagen
  • Mit sticht das hier ins
    vor 1 Woche 4 Tagen
  • Mit welcher Version Drupal
    vor 1 Woche 4 Tagen
  • Bitte um Hilfe
    vor 1 Woche 5 Tagen
  • Fehler trotz Neuinstallation
    vor 1 Woche 5 Tagen

Statistik

Beiträge im Forum: 248796
Registrierte User: 19831

Neue User:

  • J. Berten
  • vohome
  • DerRalph

» Alle User anzeigen

User nach Punkten sortiert:
wla9333
stBorchert6003
quiptime4972
Tobias Bähr4019
bv3924
ronald3845
md3717
Thoor3678
Alexander Langer3416
Exterior2903
» User nach Punkten
Zur Zeit sind 0 User und 5 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