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 (9466)
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 (9466)
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

  • Best Practices for Plain Text Notes
  • gepatchte PHP Version 7.4 für Windows
  • Canvas Palette: Eine fertige Komponentenbibliothek für Drupal Canvas
  • Hilfe zu Updates oder Composer
  • Vergleich Drupal und Contao
  • [geloest] Blocks in Bootstrap nebeneinander darstellen und nicht untereinander
  • DrupalCamp Frankfurt 27-28 November 2026
  • Bitte mein Bentzerkonto löschen
  • Beim Aufruf einiger Inhalte erhalte ich folgende Fehlermeldung
  • Neuinstallation: vermutlich ein rewrite-Problem
  • Drupal CMS installieren
  • [erledigt]MP3 in Drupal 10 einbinden
Weiter

Neue Kommentare

  • Muss ja nicht genau php 8.3 sein
    vor 23 Stunden 13 Minuten
  • Guten morgen und Danke
    vor 1 Tag 5 Stunden
  • Evtl. versuchen auf PHP 8 zu wechseln
    vor 1 Tag 11 Stunden
  • Danke Schmittrich. Die Frage
    vor 3 Tagen 3 Stunden
  • Keine Antwort auf die Frage nach dem Woher
    vor 3 Tagen 6 Stunden
  • Danke ich werde mir die
    vor 6 Wochen 23 Stunden
  • Vielen Dank für Ihren
    vor 6 Wochen 3 Tagen
  • Composer ist sehr ratsam
    vor 6 Wochen 5 Tagen
  • Vielen Dank für den
    vor 7 Wochen 1 Tag
  • Die alten CMS Vergleiche von contentmanager.de
    vor 7 Wochen 1 Tag

Statistik

Beiträge im Forum: 250324
Registrierte User: 20571

Neue User:

  • alxshell
  • FesObsemo
  • AnthonyhoF

» Alle User anzeigen

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