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

Contextualen Filter an Rules Componente übergeben

Eingetragen von torfnase (1525)
am 17.03.2016 - 03:08 Uhr in
  • Views
  • Drupal 7.x oder neuer

Hallo zusammen,

ich habe folgendes Problem:

Eine View zeigt Benutzer an.
Mit VBO und Rules würde ich den Benutzern gerne eine E-Mail schicken. Das ist natürlich gar kein Problem, in VBO tauchen die Rules Componenten ja auf.
Nun muß ich an diese Rules Componente aber auch noch eine Node-ID übergeben, damit ich daraus URLs usw. machen kann.

Jetzt frage ich mich, wie bekomme ich die Node-ID (steht als arg(1) in der URL) oder auch in der View als contextual Filter an die Rules Componente übergaben ?

Das muß doch eigentlich ganz einfach sein, ich denke mal, ich sehe gerade mal den Wald vor lauter Bäumen nicht.

Gruß
Berthold

‹ View verschluckt Alt- /Title-Tag eines Bildes Mit Colorbox mehr fotos anezigen, als auf der aktuellen Seite zu sehen sind. ›
  • Anmelden oder Registrieren um Kommentare zu schreiben

Wo ist das Problem?

Eingetragen von marco.b (645)
am 17.03.2016 - 22:37 Uhr

Wenn du eine rules component vom typ 'action' als vbo-stapelbearbeitungsoperation in die view einhängst, brauchst du doch keine argumente oder token übergeben. in der component selbst ist die action mit dem token [user:mail] definiert und dann sendet die view auf alle ausgewählten datensätze an die mailadresse der aufgerufenen user.

meine sieht so aus:

{ "rules_mail_to_user_mail" : {
    "LABEL" : "mail_to_user-mail",
    "PLUGIN" : "action set",
    "OWNER" : "rules",
    "TAGS" : [ "test" ],
    "REQUIRES" : [ "rules" ],
    "USES VARIABLES" : { "user" : { "label" : "Benutzer", "type" : "user" } },
    "ACTION SET" : [
      { "mail" : {
          "to" : [ "user:mail" ],
          "subject" : "Testmail aus component",
          "message" : ";-)  Testmessage bodytext blah …",
          "language" : [ "user:language" ]
        }
      }
    ]
  }
}

Argumente übergeben müsstest du nur, wenn du es umgekehrt machen, also in rules mit einer vbo-view entities aufrufen würdest.

  • Anmelden oder Registrieren um Kommentare zu schreiben

nun ja, wie ich schon

Eingetragen von torfnase (1525)
am 17.03.2016 - 23:46 Uhr

nun ja, wie ich schon geschrieben haben:
In der Mail werden Links steht, die etwas mit diese ID zu tun haben, d.h. es ist unabdingbar, dort auch die ID aus der URL weiterzuverarbeiten.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Es scheint für dieses Problem

Eingetragen von torfnase (1525)
am 19.03.2016 - 14:18 Uhr

Es scheint für dieses Problem wohl keine Lösung zu geben.
Auch ein längeres Gespräch mit Werrner (wla) hat nicht zu einer Lösung geführt.
Ich beschreibe die Problematik noch mal kurz:

Es gibt eine View, die Benutzer zeigt.
Den Benutzern soll per VBO und einer Rules Componente eine Mail geschickt werden.
(soweit ist das ganz einfach)

Nun kommt das Problem: Wenn ich die View aufrufe, dann hat die in der URL einen Parameter drin (von mir reingeschrieben).
Dieser Parameter muß in der Componente "verarbeitet" werden, daraus kann man z.B. einen Link auf eine Node machen, oder so etwas.

Diesen Parameter kann man offenbar nicht an die Rules Componente übergeben.

Sollte einer doch noch eine Lösung oder einen Lösungsansatz parat haben, würde ich mich freuen, das mal zu diskutieren.

Meine Lösung zu Zeit: Ich übertrage diese Parameter in der Session.

Gruß
Berthold

  • Anmelden oder Registrieren um Kommentare zu schreiben

Mit anderem Ansatz würde das evtl. gehen

Eingetragen von marco.b (645)
am 20.03.2016 - 12:51 Uhr

Nicht wissend, ob das für deine Zwecke taugt:
Wenn du es umgekehrt machen könntest, also entities über eine vbo-view in rules aufrufst, kannst du argumente (nid o.ä.) übergeben.

Als Beispiel:
Action: node wurde geflaggt
Event: view übergibt die nid und ruft alle ref. nodes/user/whatever auf, loopt durch die liste und und tut irgendwas mit denen.

Wenn du den Anwendungsfall an sich mitteilst (noch ohne festzulegen, wie das umgesetzt wird), überlege ich gerne mit, wie man das machen könnte.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Hallo Marco, vielen Dank

Eingetragen von torfnase (1525)
am 20.03.2016 - 14:00 Uhr

Hallo Marco,
vielen Dank schon mal, dass du dich mit dem Thema beschäftigt hast.

Es gibt zunächst einmal keine Verbindung zwischen dem Parameter, den ich in der URL übergeben möchte und dem User, der benachrichtigt wird.
Es ist wie oben schon beschrieben ganz einfach ein Parameter, der übergeben wird.

Du kannst dir das so vorstellen (Anwendungsfall):
Es gibt User, die sich für bestimmte Nodes interessieren könnten (festgestellt aufgrund von Taxonomieübereinstimmungen).
Diese User möchte ich über diese Node "benachrichtigen" und möchte natürlich auch ganz konkret einen Link auf die entsprechende Node mit versenden.
Außerdem möchte ich auch noch bei der Node vermerken, welche User ich wann benachrichtigt habe und noch viele mehr.
Aber das ist ja kein Problem mehr, wenn ich die Node-ID habe.

Das ist auch schon alles.

Gruß Berthold

  • Anmelden oder Registrieren um Kommentare zu schreiben

damit ich es besser verstehe …

Eingetragen von marco.b (645)
am 20.03.2016 - 17:18 Uhr
Zitat:

vielen Dank schon mal, dass du dich mit dem Thema beschäftigt hast.

gerne, wenn mir ein Thema Spaß macht.

Dieses benachrichtigen per e-mail soll wohl manuell durch dich (Redakteur o.ä.) erfolgen?
Wenn ja, könntest du doch gleich die vbo-action 'E-Mail senden' anstatt einer rules component nutzen und deine individuellen Links etc. per Hand reinschreiben, oder nicht?

Wenn es dagegen automatisiert passieren soll, wäre eine Umsatzung wie in meinem letzten Kommentar naheliegend.

Oder habe ich irgend was wesentliches noch nicht verstanden?

Beste Grüße
Marco

  • Anmelden oder Registrieren um Kommentare zu schreiben

@E-Mail mit vbo

Eingetragen von torfnase (1525)
am 20.03.2016 - 23:55 Uhr

@E-Mail mit vbo verschicken
Das ist nicht gewünscht. Auf keinen Fall geht jemand her und verschickt E-Mails mit derr Hand. Das muss schon automatisch gehen.

@Wenn es dagegen automatisiert passieren soll, wäre eine Umsatzung wie in meinem letzten Kommentar naheliegend.

es gibt weder eine Node, die einen Flag hat, noch gibt es einen referenzierten User.

Ich schreibe dir mal ein Beispiel auf:
Es gibt eine Node, die hat einen Tag: Fußball.
Es gibt User, die haben auch einen Tag: Fußball.

Also nehme ich eine View und suche alle User, die den Tag Fußball haben. Diese sollen dann über die Node benachrichtigt werden, z.B. mit einem Link direkt auf die Node.
Ferner soll auch bei der Node eingetragen werden, welche User über diese Node wann benachrichtigt wurden.
Das ist auch schon alles. Der Aufruf der View enthält dann z.B. die Node-ID als Parameter, z.B. so " /node/passende-user/1448"

(Das ist nur ein sehr einfaches Beispiel, in Wirklichkeit ist der "Matching-Prozess" wesentlich komplexer, aber das tut ja hier nichts zur Sache.)

Es gibt keine Referenz zu einem User. Der Sachverhalt ist auch überhaupt nicht kompliziert, sondern eher trivial.

Das Problem läßt sich darauf reduzieren, dass man einen Parameter aus der URL (hier: die Node-ID: 1448), an die Rule Componente übergeben muss.
Dort kann man dann mit diesem Parameter sowohl einen Link zur Node zusammenbasteln, als auch in der Node vermerken, wer wann informiert worden ist.
Der User mit allen Daten steht in der Rules Componente zur Verfügung

Ich hätte auch gedacht, dass es eine Standardprozedur gibt, mit der man an eine Rule bzw. Rule Componente einen Parameter übergibt, aber die gibt es in der Tat nicht.
arg(0) enthält in der Regel das Wort "batch".

Gruß
Berthold

  • Anmelden oder Registrieren um Kommentare zu schreiben

Das mit dem flag war ja nur ein Beispiel

Eingetragen von marco.b (645)
am 22.03.2016 - 14:01 Uhr

Letztendlich brauchst du zum Anstoßen der Rule ein Event.
Das kann ja auch ein cronjob sein und wäre wahrscheinlich das richtige für deinen Anwendungsfall.

Diese Rule aufzusetzen ist schon etwas kniffelig, aber grundsätzlich geht das.

Ein paar Tipps dazu:
1. Bei einer Cron Rule macht es keinen Sinn, conditions zu setzen, weil der cron keinen Inhalt / Benutzer als Event-kontext für die condition kennt. Wenn du also conditions setzen willst, dann am besten unter actions mit rules_conditional (Modul)
2. für deine Zwecke müsstest du am besten eine vbo-view bauen, die dann die anzumailenden user und die zu sendenden link parameter (nid's) kennt (oder, wenn das nicht geht eben mit 2 views). Dann die liste der benötigten entites über den view in der rule aufrufen. Für Views in einer cron-rule grundsätzlich beachten: in den Datenbankabfrageeinstellungen SQL-rewriting deaktivieren, weil ein cronjob als gast laufen kann und ihm vielleicht die benutzerrechte zum Datenaufruf fehlen, Deshalb aus Sicherheitsgründen keine views page mit aufrufbarem link verwenden, sondern die 'master' view oder einen block.

Beste Grüße
Marco

  • Anmelden oder Registrieren um Kommentare zu schreiben

Hallo Marco, @cron Rule das

Eingetragen von torfnase (1525)
am 22.03.2016 - 15:17 Uhr

Hallo Marco,

@cron Rule
das ist überhaupt nicht notwendig.
Ich habe eine View und die hat einen VBO - Eintrag (Stapelverarbeitung). Dort kann ich User ankreuzen, die benachrichtigt werden.
VBO löst dann eine Rules Componente aus, die die Mails verschickt.
Das ist wirklich alles gar kein Problem.

Das Problem ist, dass man aus meiner Sicht keinen Paramter aus der URL an die Rules Componente übergeben kann.

Es geht ausschließlich darum, einen Parameter aus der URL an die Rules Componente zu übergeben.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Hast du dieses Modul schon

Eingetragen von Jenna (1883)
am 25.03.2016 - 13:59 Uhr

Hast du dieses Modul schon getestet?: https://www.drupal.org/project/api_tokens

Vielleicht kommst du damit an die Parameter aus den Views ran?

Grüße Jenna

  • 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 2 Tagen
  • Hey danke
    vor 1 Woche 3 Tagen
  • Update: jetzt gibt's ein
    vor 1 Woche 3 Tagen
  • Hallo, im Prinzip habe ich
    vor 2 Wochen 1 Tag
  • Da scheint die Terminologie
    vor 2 Wochen 1 Tag
  • Kannst doch auch alles direkt
    vor 2 Wochen 5 Tagen
  • In der entsprechenden View
    vor 2 Wochen 5 Tagen
  • Dazu müsstest Du vermutlich
    vor 2 Wochen 5 Tagen
  • gelöst
    vor 5 Wochen 2 Tagen
  • Ja natürlich. Dass ist etwas,
    vor 5 Wochen 3 Tagen

Statistik

Beiträge im Forum: 250233
Registrierte User: 20450

Neue User:

  • Mroppoofpaync
  • 4aficiona2
  • AppBuilder

» 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 25 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