Regel für Aktion "bei Aktualisierung von Inhalt" wird auch bei "Erzeugen von neuen Inhalt" angewandt
Eingetragen von ThuleNB (379)
am 17.02.2015 - 10:52 Uhr in
am 17.02.2015 - 10:52 Uhr in
Hallo zusammen,
ich habe eine Regel mit dem Modul "Rules" erstellt:
Ereignis: Nach dem Aktualisieren bestehenden Inhalts of Typ Produkt
Aktion: Seiten-Weiterleitung
Die Regel funktioniert gut bis auf die Tatsache, dass sie auch für das Ereignis "Nach Erstellen von neuem Inhalt of Typ Produkt angewandt wird.
Die Google-Suche brachte mich nur auf dieses ähnliche Problem und den darin verlinkten Post.
Man kann da vielleicht was mit PHP machen, oder? Leider kenne ich mich damit nicht aus. Kann mir bitte jemand helfen?
Grüße
Thomas
- Anmelden oder Registrieren um Kommentare zu schreiben
In Deinem Link ist doch eine
am 17.02.2015 - 11:05 Uhr
In Deinem Link ist doch eine Lösung angegeben. Hast Du das versucht? Gibt es dabei Probleme?
Hinweis: Um "Execute custom PHP code" in Rules Condition verfügbar zu haben, musst Du PHP Filter aktivieren (Core-Modul).
Falls Du bei Deiner Seite verschiedene Benutzer mit unterschiedlichen Rollen hast, solltest Du darauf achten dass Du mit PHP-Filter keine Sicherheitslücken öffnest.
Ich habe diesen Code
am 17.02.2015 - 11:25 Uhr
Ich habe diesen Code ausprobiert:
<?php
if($node->changed) {
return true;
} else {
return false;
}
?>
Also, dass die Regel nur dann angewandt werden soll, wenn der Inhalt geändert wurde. Ich wollte es dann testen und einen neuen Inhalt "Produkt" hinzufügen. Dann kommt aber eine Meldung "Zugriff verweigert". Mein Fall ist auch nicht genau gleich wie in dem Link, denn dort hat der Poster zwei Regeln und beide werden angewandt. Ich habe nur eine Regel mit einem Ereignis, welche aber auch auf ein nicht definiertes Ereignis reagiert.
Danke für die Hilfe.
EDIT: "Zugriff verweigert" konnte ich beheben. Das lag an etwas anderem.
Hm, in dem Thread wird davon
am 17.02.2015 - 11:34 Uhr
Hm, in dem Thread wird davon gesprochen $node->changed und $node->created zu vergleichen um herauszufinden ob der Node neu ist.
Also sollte es vermutlich lauten:
if ($node->created == $node->changed) {
return false;
}
else
{
return true;
}
und soll man nicht die php-delimiters weg lassen bei Execute Custom Code in Rules?
Lösungsansatz ohne php
am 18.02.2015 - 11:37 Uhr
Das Problem scheint nur bei mehreren getriggerten Rules zu entstehen, normal ist das Verhalten nicht.
Zur Analyse: Unter admin/config/workflow/rules/settings kannst du bei "Show debug information" immer einstellen, dann sieht du, welche Rules getriggert werden. Ich vermute, dass eine weitere Rule getriggert wird, die du sinnvoll einschränken kannst. Auf jeden Fall ist es gut, evtl. Kettenreaktionen zu erkennen.
Falls das nicht hilft, wäre ein Lösungsansatz ohne php, dass du in deiner Rule eine condition setzt "Datenwert ist leer" z.B für das Body Field (node-unchanged:body), das ist allerdings ungetestet, ich kann das Problem ja nicht nachvollziehen.
Beste Grüße
Marco
– Grüße aus Franken –
"Eine Entscheidung ist dann eine gute Entscheidung, wenn Sie zu mehr Möglichkeiten führt.”
Heinz von Foerster (Kybernetiker)
www.bienlein-kommunikation.de