Views mit Custom Prepopulated Link
am 06.05.2010 - 14:14 Uhr in
Hallo,
ich hab folgendes Problem: Ich lasse in Views eine Ansicht ausgeben in der Bestimmte Felder ausgegeben sind, die zu einem User gehören (u.a. Profilbild, Name und Node Reference Felder). Die Userprofile sind über content profile angelegt.
Jetzt möchte ich in diesem View einen Link ausgeben, der auf ein bestehendes Kontaktformular verweist. Nach Klicken dieses Links soll das Formular geöffnet werden und und bei Absenden an die Mail-Adresse des jeweiligen Benutzers gesendet werden. Ich will also nur ein Formular erstellen das dann ja nach View an die jeweilige Adresse gesendet werden kann.
Views Custom Field habe ich aktiviert, bin jedoch eine Null was PHP angeht.
Das Formular soll über Webform erstellt werden.
Jeder View hat auch ein email Feld, was geladen, aber nicht angezeigt wird.
Hieraus sollte er sich die Mail Adresse holen, die er dann ans Formular übergibt.
Nur wie???
- Anmelden oder Registrieren um Kommentare zu schreiben
Hallo Ex-Kollege :) wenn das
am 11.05.2010 - 10:28 Uhr
Hallo Ex-Kollege :)
wenn das Kontaktformular nur durch registrierte Benutzer abzuschicken sein soll, kannst du auch das core contact form pro Benutzer einrichten. In Views würdest du dann die User ID als Feld reinholen, dieses von der Anzeige ausschließen und einen Link bauen, der ungefähr so aussehen würde: /user/[uid]/contact.
Eine andere Lösung mit einem versteckten Formularfeld (z.B. in einem Webform) wäre insofern schlecht, als das es im Quelltext immer noch zu sehen ist und so die Mail-Adresse herauszufinden ist. Genauso mit einem Prepopulate-Link, weil du dann die Mail-Adresse in der URL mitschickst. Deine Benutzer werden sich nicht besonders freuen, wenn du ihre Mailadresse so offen präsentierst.
Liebe Grüße
Anja
Hallo Anja, vielen Dank
am 19.05.2010 - 16:48 Uhr
Hallo Anja,
vielen Dank erstmal. Ich bin erst jetzt zu gekommen dieses Thema weiter zu bearbeiten.
Das Kontaktformular soll von Gästen benutzt werden können, das ist das Problem. Es ist in dem Fall nicht so schlimm wenn die eMail in der URL mitgegeben wird.
Folgendes Problem also:
1. Es werden Profile (als Nodes) angezeigt, die eine Mailadresse als Feld enthalten. Dieses wird aber nicht angezeigt.
2. in dieses Node will ich einen Link setzen der ein vorhandenes Webfom öffnet und als Empfänger-Adresse das Feld aus (1.) übergibt.
Im Groben will ich doch nur ein Kontaktformular dessen Empfänger dynamisch generiert werden.
Kannst Du da helfen?
Danke schön und liebe Grüße um die Ecke
Ich würde das als großes
am 19.05.2010 - 17:59 Uhr
Ich würde das als großes Sicherheitsproblem einstufen und dir normalerweise von diesem Vorgehen abraten. Es kann aber auch Umsetzungen geben, wo du das so machen kannst, z.B. wenn du Mitarbeiter auflistest, die kontaktiert werden sollen.
Mir fällt auch nur Prepopulate ein. Damit hast du allerdings das Problem, dass die Mailadresse in einem Link steht und somit nicht geheimzuhalten ist. Sieht man davon mal ab, würde dein Feld im View so aussehen:
- prepopulate installieren
- du fügst das Feld hinzu, das die Mailadresse beinhaltet, änderst die Ausgabe des Feldes in sowas wie "Kontaktieren" und
- dann aktivierst du die Ausgabe des Feldes als Link "Output this field as a link" und gibst dort etwas in dieser Art ein: deinkontaktformular?edit[title]=[feldname]
Der Feldname hinter dem "=" steht auch im "Ersetzungsmuster" oder Token innerhalb dieses Feld-Dialogs in Views. Er könnte z.B. so aussehen: [field_email]. Das Feld in den eckigen Klammern, das vor dem "=" steht, ist evtl. etwas schwerer zu finden. Es sollte in dem Webform input Element stehen, das du als E-Mail-Feld verwenden willst. Im nachfolgenden Beispiel wäre das "submitted[e_mail_an]"
<input type="text" class="form-text required" value="" size="60" id="edit-submitted-e-mail" name="submitted[e_mail_an]" maxlength="128">
Sodass der Link dann so aussehen könnte: deinkontaktformular?edit[submitted][e_mail_an]=[feldname]
Im Webform musst du noch das entsprechende Feld verstecken und unter E-Mail-Einstellungen dein Feld als Bedingten Empfänger aktivieren. Ich könnte mir vorstellen, dass das funktioniert, kann es aber nicht versprechen.
Wenn du nach Absenden des Webforms zurück zum View möchtest, kannst du an den Link noch sowas hängen: deinkontaktformular?edit[submitted][e_mail_an]=[feldname]&destination=deineviewurl (bin nicht sicher ob das funktioniert, weil Webform ja auch auf ein Node umleiten kann, auf dem das erfolgreiche Versenden bestätigt wird bzw. eine Erfolgsnachricht anzeigt. Musst du ausprobieren)
Super, das hab ich so gemacht
am 19.05.2010 - 22:05 Uhr
Super, das hab ich so gemacht und hat wunderbar geklappt. Vielen Dank.
Nächste Frage ;-)
Das gleiche, was ich jetzt im View habe, möchte ich auch im Node haben. Wenn ich das über die Node Template mache, wie kann ich das Feld ansprechen, dass ja nicht ausgegeben wird im Node (exclude in den Feldeinstellungen). Oder kann ich das Feld ausgeben lassen und wie bei Views den Wert mit einem Link überschreiben?
Vielen Dank und Gute Nacht :)
Gib doch im Node Template nur
am 19.05.2010 - 22:19 Uhr
Gib doch im Node Template nur die Felder aus, die du brauchst (ohne exclude in Feldeinstellungen). Den Link solltest du mit einer preprocess Funktion anpassen, damit am Ende derselbe Link rauskommt wie oben beschrieben.