Computed Field: Werte für alle nodes automatisiert berechnen bzw. Berechnung initialisieren - Wie?
am 28.02.2020 - 12:02 Uhr in
Hallo,
ich habe ein node, das im Nachhinein ein "computed field" erhalten hat.
Jetzt möchte ich für alle nodes (mehr als 1.000 Stück) das Feld berechnen und das Ergebnis anzeigen lassen.
Ich habe folgende Module installiert, um ein automatisiertes Abspeichern der nodes zu initialisieren, wobei ich hoffte, dass das Feld jeweils berechnet/gefüllt würde (was nicht der Fall ist):
- Views Bulk Operations (VBO)
- Resave All Nodes
In D7 konnte man durch ein VBO initialisiertes Abspeichern des nodes das "computed field" berechnen/füllen lassen.
Hier in D8 anscheinend nicht. Nur wenn ich tatsächlich einer der nodes aufrufe, editiere und abspeichere, wird das "computed field" berechnet/gefüllt - vorher nicht.
Gibt es vielleicht noch eine Möglichkeit über drush oder muss ich etwas speziell einstellen?
Es muss doch möglich sein das Feld für alle nodes zu füllen.
Vielen Dank im Voraus für eure Hilfe.
- Anmelden oder Registrieren um Kommentare zu schreiben
Entweder schreibste da ein
am 28.02.2020 - 14:21 Uhr
Entweder schreibste da ein Modul für, dass die betreffenden Nodes neu abspeichert oder du löst das mit einer entsprechenden View:
https://drupal.stackexchange.com/questions/223680/how-to-resave-all-my-n...
vielen Dank glycid. Über
am 28.02.2020 - 15:27 Uhr
vielen Dank glycid. Über genau diesen Beitrag bin ich auch gestolpert, dabei hatte ich das Modul "Resave All Nodes" gefunden.
Ich bin genau den beschriebenen Weg gegangen und nutze VBO ebenfalls mit einer View. Das funktioniert auch wirklich klasse.
Es führt den Befehl "neu speichern" für alle gewählten nodes durch, aber das "Computed Field" wird dabei nicht berührt bzw. der Wert nicht berechnet/das Feld nicht befüllt. Es bleibt trotzdem leer, auch wenn durch VBO der Inhalt neu gespeichert wurde. Nur wenn ich manuell den Inhalt neu abspeichere, wird das Computed Field befüllt/berechnet.
Das verstehe ich eben nicht. Das müsste doch beides der gleiche Prozess sein, oder nicht?
Was ist anders, wenn VBO den Inhalt neu speichert bzw. wenn ich ihn manuell selbst neu speichere? Was fehlt bei VBO?
So weit ich das noch in
am 28.02.2020 - 19:11 Uhr
So weit ich das noch in Erinnerung habe, musst du in computed field einstellen, dass die Werte in der DB gespeichert werden. Ansonsten rechnet CF on the fly beim Node View. In diesem Fall wirst du mit VBO natürlich nix.
Wenn die Daten in der DB liegen und VBO nichts ändert, kann es auch sein, dass kein node bzw. entity load passiert. Dies ist aber nötig, da das re-compute bei diesen Funktionsaufrufen geschieht. Da könnte sich mit VBO im Core schon was geändert haben.
Am besten wäre es wirklich, du schmeißt dieses dämliche Modul raus und packst deine Logik in ein eigenes Modul. PHP Code in der DB ist wirklich sehr schlechte Praxis ;)