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

Suche hook für updates von einem oder vielen nodes eines Content Typen

Eingetragen von maen (547)
am 04.10.2013 - 18:42 Uhr in
  • Modul-Entwicklung
  • Drupal 7.x

Schönen Abend Euch allen!

Ich komm nicht auf den Trichter, vielleicht hat ja einer eine Idee:

Ich importiere via webservices nodes vom Typ A. Jetzt möchte ich ein Modul bauen, das folgendes besagt:

Wenn ein oder mehrere nodes verändert werden, dann führe folgendes aus....
node_load und node_update fallen daher ja aus, weil ich nich einen bestimmten node möchte sondern weil ich alle nodes beobachten möchte. Das bedeutet, wenn ein oder mehrere nodes neu angelegt werden, wenn ein oder mehrere nodes geupdatet werden, dann mache folgendes ...

Weiß da jemand Rat?

Vielen Dank vorab,

maen

‹ [gelöst] Synonyms Bulk Import Will automatisch nodes erstellen und updaten lassen, aber node_save reagiert komisch!??? ›
  • Anmelden oder Registrieren um Kommentare zu schreiben

Dann nimm hook_node_presave.

Eingetragen von wla (9461)
am 04.10.2013 - 18:48 Uhr

Dann nimm hook_node_presave. Dann kommen alle Nodes in Deinem Modul vorbei, die gespeichert werden sollen und zwar direkt vor dem Speichern. Dann kannst Du mit dem Node anstellen, was Du willst oder andere Aktionen ausführen. Erst anschließend wird er gespeichert.

Beste Grüße
Werner

  • Anmelden oder Registrieren um Kommentare zu schreiben

Hallo maen,Hier siehst du

Eingetragen von Sawascwoolf (125)
am 08.10.2013 - 12:00 Uhr

Hallo maen,

Hier siehst du eine Liste der node_hooks https://api.drupal.org/api/drupal/modules!node!node.api.php/group/node_api_hooks/7

Suche dir den passenden aus, beachte dass bei neuen Nodes innerhalb des Hooks hook_node_presave

<?php
$node
->nid
?>
noch nicht gesetzt ist.
Wenn du also auch neue Nodes überwachen möchtest und auch auf die nid des gerade erstellten Inhaltes zugreifen musst dann musst du die beiden Hooks:
hook_node_insert
hook_node_update
verwenden.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Danke schön!

Eingetragen von maen (547)
am 11.10.2013 - 18:56 Uhr

Ich dachte ich bekomme eine email wenn jemand das Thema beantwortet. Dem war nicht so. Deshalb hiermit Danke!

  • Anmelden oder Registrieren um Kommentare zu schreiben

Denkfehler bei node_save oder _presave???

Eingetragen von maen (547)
am 13.10.2013 - 09:25 Uhr

So, ich habe jetzt meine erste fette Funktion in drupal geschrieben.

Sie besteht aus 4 Aufrufen von Content Typen per EntityFieldQuery, ner Masse an Schleifen zur Bearbeitung von den arrays, die dadurch reinkommen, und entweder dem Erstellen von neuen nodes verschiedener Contenttypen mittels $node = new stdClass() oder dem update per node_load.
Läuft fehlerfrei mit 20 Versuchsläufen und mehr!

Aufgerufen wird sie wenn ich den Pfad per Browser besuche.

Jetzt will ich diese Funktion automatisch laufen lassen, also habe ich die Funktion von kk_tabelle_kk_match umbenannt in kk_tabelle_node_save und den Wert des page_callbacks angepasst.

Aber läuft nicht.

Frage:

Weiss da einer mehr?

  • Anmelden oder Registrieren um Kommentare zu schreiben

Du musst den Cache von Drupal

Eingetragen von Sawascwoolf (125)
am 13.10.2013 - 11:05 Uhr

Du musst den Cache von Drupal leeren.
Oder aber dein Modul deaktivieren und anschließend wieder aktivieren

  • Anmelden oder Registrieren um Kommentare zu schreiben

Mache ich mit drush. War auch

Eingetragen von maen (547)
am 13.10.2013 - 12:14 Uhr

Mache ich mit drush. War auch mein Gedanke. Frage: Muss ich evtl den page callback aus dem menu hook rausschmeissen damit der läuft?

  • Anmelden oder Registrieren um Kommentare zu schreiben

Also ich verstehe auch gerade

Eingetragen von Sawascwoolf (125)
am 13.10.2013 - 12:32 Uhr

Also ich verstehe auch gerade nicht, wann die Funktion aufgerufen werden soll.

Also beim Aufruf einer Seite, beim speichern von bestimmtem Inhalt oder wann du die Funktion gerne ausführen willst.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Für die Funktion gibt es 3

Eingetragen von maen (547)
am 13.10.2013 - 14:27 Uhr

Für die Funktion gibt es 3 Anwendungsfälle:
- nodes werden importiert
- nodes werden bearbeitet
- nodes werden angelegt

Eine grundsätzliche frage von mir ist auch:

Wenn ich hook_node (update, save, presave) anwende, kann ich egal welchen Code ausführen lassen, bspw. node wurde angelegt -> anderer node wird angelegt oder node wurde importiert-> set message hallo, etc.

Oder muss sich die Funktion ausschliesslich auf die zu behandelnde node beziehen?

Oder soll ich rules verwenden?

  • Anmelden oder Registrieren um Kommentare zu schreiben

Du stellst damit sicher, daß

Eingetragen von wla (9461)
am 13.10.2013 - 14:54 Uhr

Du stellst damit sicher, daß Deine Funktion zu einem bestimmten Zeitpunkt in der Behandlung des Nodes aufgerufen wird. Was Du dann mit den Daten des Nodes machst (oder auch nicht), ist völlig Deine Sache, ebenso, was Du in dieser Funktion alles ausführst.

Beste Grüße
Werner

  • Anmelden oder Registrieren um Kommentare zu schreiben

OK, dann werde ich morgen mal

Eingetragen von maen (547)
am 13.10.2013 - 16:44 Uhr

OK, dann werde ich morgen mal machen. Danke!

  • Anmelden oder Registrieren um Kommentare zu schreiben

Hallo ich nochmal ;) Also

Eingetragen von Sawascwoolf (125)
am 13.10.2013 - 17:35 Uhr

Hallo ich nochmal ;)

Also wenn du schon dein eigenes Modul programmiert hast kannst du Rules weglassen, du musst nur deine Hooks richtig benennen.

Schaue dir nochmal meinen ersten Post hier im Thread an:

Zitat:

Hallo maen,

Hier siehst du eine Liste der node_hooks https://api.drupal.org/api/drupal/modules!node!node.api.php/group/node_api_hooks/7

Suche dir den passenden aus, beachte dass bei neuen Nodes innerhalb des Hooks hook_node_presave

<?php
$node
->nid
?>

noch nicht gesetzt ist.
Wenn du also auch neue Nodes überwachen möchtest und auch auf die nid des gerade erstellten Inhaltes zugreifen musst dann musst du die beiden Hooks:
hook_node_insert
hook_node_update
verwenden.

Also nochmal:
Brauchst du die nid in deiner Funktion?

Nein -> verwende hook_node_presave
Ja -> verwende hook_node_insert und hook_node_update

Denke hierbei daran, dass diese Hooks für alle content-types aufgerufen werden, also auch für diejenigen die in der Schleife erzeugt/geändert werden.

Also bietet sich folgende Struktur an:

<?php
function hook_node_presave($node) {
  switch (
$node->type) {
    case
"kk_tabelle": // oder wie auch immer der zu überwachende Inhaltstyp lautet
   
deineEigenePHPFunktion($node);
    break;
  }
}
?>

Ein wichtiger Hinweis noch zum Schluss:
hook wird ersetzt durch den Namen deines Moduls, nicht durch irgendwelche Inhaltstypen.

  • Anmelden oder Registrieren um Kommentare zu schreiben

OK, denke ich werde das dann

Eingetragen von maen (547)
am 14.10.2013 - 06:31 Uhr

OK, denke ich werde das dann mit insert/update lösen. Eine letzte Verstândnisfrage noch yu dem Thema:

Wie wird die aktuelle nid von dem node, der gerade bearbeitet, importiert oder angelegt wird, in die Funktion übertragen?
Ich meine $node-> nid ist klar, aber wie filtere ich die so, dass die gerade benutzte oder neu angelegte nid bei rauskommt?

  • Anmelden oder Registrieren um Kommentare zu schreiben

Benutzeranmeldung

  • Registrieren
  • Neues Passwort anfordern

Aktive Forenthemen

  • für drupal11 ein Slider Modul
  • [gelöst] W3CSS Paragraphs Views
  • Drupal 11 neu aufsetzen und Bereiche aus 10 importieren
  • Wie erlaubt man neuen Benutzern auf die Resetseite zugreifen zu dürfen.
  • [gelöst] Anzeigeformat Text mit Bild in einem Artikel, Drupal 11
  • Social Media Buttons um Insteragram erweitern
  • Nach Installation der neuesten D10-Version kein Zugriff auf Website
  • Composer nach Umzug
  • [gelöst] Taxonomie Begriffe zeigt nicht alle Nodes an
  • Drupal 11 + Experience Builder (Canvas) + Layout Builder
  • Welche KI verwendet ihr?
  • Update Manger läst sich nicht Installieren
Weiter

Neue Kommentare

  • melde mich mal wieder, da ich
    vor 1 Woche 5 Tagen
  • Hey danke
    vor 1 Woche 6 Tagen
  • Update: jetzt gibt's ein
    vor 1 Woche 6 Tagen
  • Hallo, im Prinzip habe ich
    vor 2 Wochen 4 Tagen
  • Da scheint die Terminologie
    vor 2 Wochen 4 Tagen
  • Kannst doch auch alles direkt
    vor 3 Wochen 1 Tag
  • In der entsprechenden View
    vor 3 Wochen 1 Tag
  • Dazu müsstest Du vermutlich
    vor 3 Wochen 1 Tag
  • gelöst
    vor 5 Wochen 5 Tagen
  • Ja natürlich. Dass ist etwas,
    vor 5 Wochen 6 Tagen

Statistik

Beiträge im Forum: 250233
Registrierte User: 20451

Neue User:

  • ByteScrapers
  • Mroppoofpaync
  • 4aficiona2

» Alle User anzeigen

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