User-Contact-Form per Views auf Seite einbinden. Geht das?
Eingetragen von t2k (258)
am 08.05.2014 - 01:32 Uhr in
am 08.05.2014 - 01:32 Uhr in
Guten Abend!
ich würde gern in einer View alle User ausgeben und zusätzlich für jeden User sein Kontakt-Formular (user/xyz/contact) einblenden.
Geht das irgendwie?
Oder gibt es einen anderen Weg für jeden User ein Formular zu erstellen, in dem dieser automatisch als Empfänger eingetragen ist?
Vielen Dank und Grüße!
- Anmelden oder Registrieren um Kommentare zu schreiben
Das Formular wird (in PHP)
am 10.05.2014 - 14:12 Uhr
Das Formular wird (in PHP) mit contact_personal_form() erzeugt, wobei vorher noch die Rechte überprüft werden (siehe Funktion contact_menu() ).
Mit einem eigenen Block (und evtl. einer Hilfsview um die gewünschten User zu ermitteln) gehts -> ca 40 Zeilen PHP.
Deinen Alternativwunsch hab ich nicht verstanden. Wenn im System 20 User sind, willst du dann 20 Contaktformulare auf der Seite haben? Was willst Du tatsächlich ? Evtl. nur ein Formular, wo du den Empfänger wählen kannst ?
Vielen Dank für deine
am 11.05.2014 - 22:38 Uhr
Vielen Dank für deine Antwort, Kle.
Ich möchte eine Möglichkeit schaffen, die User per E-Mail kontaktierbar zu machen.
Alle User werden dabei als Views-Liste ausgegeben. Statt eines Mailto-Links oder eines Links auf das User-Kontakt-Formular, soll aber direkt in der View für jeden User ein Mailformular eingeblendet werden.
Wo sollte bei deiner Lösung denn der PHP-Code auftauchen? Direkt in der Views-Template-Datei oder im View selbst?
Was sollte da stehen?
Vielen Dank und Grüße!
Ich fürchte,
am 12.05.2014 - 07:52 Uhr
du schmeist ein bisschen etwas durchaeinander.
Views ist KEIN Modul zur Darstellung, sondern zur Datenbankabfrage.
Vielleicht bist du mit Panels eher auf dem richtigen Dampfer.
Ok. Ich geh mal davon aus,
am 12.05.2014 - 08:41 Uhr
Ok. Ich geh mal davon aus, dass es sich um sehr wenige User handelt, sonst wäre eine Lösung mit einem Formular und der Wahl des Rezipienten evtl. praktischer.
So gehts (grad gecoded und getestet):
<?php
$uid = $data->uid;
module_load_include('inc', 'contact', 'contact.pages');
$user = user_load($uid);
$form = drupal_get_form('contact_personal_form', $user);
print render($form);
?>
ronald schrieb du schmeist
am 12.05.2014 - 08:46 Uhr
du schmeist ein bisschen etwas durchaeinander.
Views ist KEIN Modul zur Darstellung, sondern zur Datenbankabfrage.
Da möcht ich wiedersprechen: Views ist eine Kombination von Abfrage und Darstellung. Nicht umsonst gibt es Views-Erweiterungen, die Kalender oder Maps ausgeben und die Möglichkeit jedes Datenstück oder die Gesamtstruktur mit eigenen Templates umzuschreiben.
Ganz herzlichen Dank!!!Werde
am 12.05.2014 - 17:51 Uhr
Ganz herzlichen Dank!!!
Werde das gleich mal testen!
Wäre es denn eigentlich ein Problem wenn es mehr als ein paar wenige User sind?
Spricht eigentlich was dagegen ein solches View (mit Kontext und User ID via Entity-Reference) auch als Block einzusetzen?
Nochmals 1000-Dank und Grüße!
Najaaa..... Ich stell mir
am 12.05.2014 - 18:28 Uhr
Najaaa.....
Ich stell mir eine Seite mit einem Dutzend Kontakt-Formularen vor und find das sehr unübersichtlich.
Man kann ja auch nur eines ausfüllen, denn bei "senden" wird ja auch nur dieses eine gesendet.
Meine Anregung wäre EIN Formular, wo du den Empfänger per Dropdown wählen kannst.
Alternativ: Meine gepostete Lösung mit dem Views-PHP, aber das Kontaktformular ausgeblendet und per Javascript-Button ("Sende Mail") einblenden.
Egal, was du möchtest - von der Stange gibts das wahrscheinlich nicht...
lg - Kle
Ja, das mit der
am 12.05.2014 - 19:08 Uhr
Ja, das mit der Übersichtlichkeit ist klar!
Ich hatte es als Accordion angedacht ...
Nochmal nachgefragt: Also Block wäre das auch möglich, oder?
Die Lösung mit EINEM Formular und den Empfängern als Dropdown find ich auch interessant. Wie würde man das am cleversten umsetzen?
Danke und Grüße!!!
Am cleversten ist, du findest
am 12.05.2014 - 19:47 Uhr
Am cleversten ist, du findest einen freundlichen Drupal-Coder, der Dir das fix macht :-)
Denn ohne PHP und Ahnung vom Drupal-Core wirds schwer.
(Nicht böse sein - ich scheide aus Zeitmangel aus)
Ach, hätte mich nur mal
am 12.05.2014 - 19:54 Uhr
Ach, hätte mich nur mal interessiert, wie du das mit dem Dropdown lösen würdest ...
Gebaut bekomm ich das dann schon :-)
Ok. Meine Idee wäre: Dropdown
am 12.05.2014 - 22:15 Uhr
Ok. Meine Idee wäre:
Dropdown (wenn es nicht so viele User sind) oder Autocomplete (da gibt es eine Core-funktion: such mal nach
'#autocomplete_path' => 'user/autocomplete'
).Evtl. ist es praktisch per form_alter das Contact-form etwas umzubiegen und den $recipient als extrafeld mit Dropdown oder autocomplete zu bauen.
Dieses Feld braucht dann auch ein submit-callback, damit der sonst im form-Aufruf übergebene $recipient korrekt gesetzt ist. Dieser callback muss aufgerufen werden, bevor der normale callback läuft.
Viel Erfolg !
Ok. Ist in der Tat etwas
am 12.05.2014 - 23:12 Uhr
Ok.
Ist in der Tat etwas kompliziert für mich ...
Vielen Dank und Grüße!!!
Zitat: ich würde gern in
am 13.05.2014 - 14:39 Uhr
ich würde gern in einer View alle User ausgeben und zusätzlich für jeden User sein Kontakt-Formular (user/xyz/contact) einblenden.
Wäre denn nicht eine Views Liste mit z.B. Userbild und Kurzinfo möglich, dazu einen Button auf die Detailseite des Users mit seinem Kontaktform?
Also ähnlich wie bei Immobilien Listen mit Link auf die Detailseite und Anfrageformular?
Ich bin nicht sicher ob ich dich richtig verstehe, aber in einer Übersicht bereits zig Kontaktformulare auszugeben sieht vermutlich optisch sehr eigenartig aus.
Sonst beschreibe bitte noch mal genauer was du vorhast, vielleicht gibt es ja eine viel simplere Lösung.
Grüße Jenna
Schau mal
am 13.05.2014 - 14:51 Uhr
https://drupal.org/project/privatemsg
Ist das kein passender Ansatz?
In meinem speziellen Fall
am 13.05.2014 - 16:45 Uhr
In meinem speziellen Fall geht es um eine Liste von Ansprechpartnern.
Diese sollen mit Anschrift, Kontakt-Daten, Bild und eben (wegen Spam-Gefahr ein) mit Kontakt-Formular ausgegeben werden.
Die User-Seiten selbst wollte ich eigentlich garnicht zugänglich machen.
Da die Ansprechpartner auch auf verschiedenen Nodes/Seiten auftauchen, würde ich auch hier die User mitsamt Kontakt-Formular einblenden wollen...
Grüße,
t2k
Moinsen, wenn dir, wie von
am 13.05.2014 - 18:10 Uhr
Moinsen,
wenn dir, wie von ronald vorgeschlagen, privatemsg nicht zusagt, kannst du dir ungefähr eine von kle's Lösungen auch ohne coden selber bauen:
Du nimmst entity form und fügst jedem User ein Kontakt Formular hinzu. Die entity Form felder werden wie normale Drupal Felder behandelt und dementsprechend von views unterstützt, so dass du die mit dem Bild, Namen etc. in der View ausgeben kannst. Dann installierst du dir das Modul Colorbox. In den Einstellungen aktivierst du die Option "Enable Colorbox load". Daraufhin findest du in der View zusätzlich ein Colorbox Feld. In den Feldeinstellungen gibst du an, dass das Kontakt Form geladen werden soll. Das Form Feld selber schließt du von der Anzeige aus. Jetzt legst du in der View noch einen Link "Ansprechpartner kontaktieren" an, der auf das Colorbox Feld zeigt. Wenn dann auf den entsprechenden Seiten jemand auf den Link klickt, öffnet sich das Formular in der Colorbox.
Ich denke, dass ist neben Privatemsg die eleganteste Lösung.
Coole Lösung, glycid !
am 13.05.2014 - 19:05 Uhr
Coole Lösung, glycid !
Vielen Dank Glycid! Das hört
am 14.05.2014 - 16:23 Uhr
Vielen Dank Glycid!
Das hört sich wirklich gut an!
Gibt es da irgendwelche Nachteile gegenüber einer Lösung die direkt über das User-Kontaktformular geht?
Du schriebst:
Du nimmst entity form und fügst jedem User ein Kontakt Formular hinzu.
Das heißt man fürgt im User-"Inhaltstypen" ein entity-form-Feld hinzu?
Nicht für jeden User eine eigenes Formular, oder?
Vielen Dank nochmals und beste Grüße!!!
t2k schrieb Das heißt man
am 14.05.2014 - 17:36 Uhr
Das heißt man fürgt im User-"Inhaltstypen" ein entity-form-Feld hinzu?
Nicht für jeden User eine eigenes Formular, oder?
Ja genau. Kannste dir auch hier mal angucken: http://www.youtube.com/watch?v=CjVKZSjQElE
Ist für Nodes, funktioniert aber für den User genauso. Das Modul Entity Reference brauchst du auch noch.
Super! Vielen Dank noch
am 15.05.2014 - 15:25 Uhr
Super! Vielen Dank noch mal!!!
Hallo Glycid, es hat sich
am 29.08.2014 - 00:11 Uhr
Hallo Glycid,
es hat sich etwas gezogen, aber ich bin nun soweit, dass ich jeder User sein entityform hat und diese auch auf der Views-page angezeigt werden.
Mein Problem nun: Woher weiß die entityform jetzt, an wen die Mail gesendet werden soll? Kann ich dies irgendwie im View übergeben?
Vielleicht hast du ja noch einen Tipp dazu?
Vielen Dank und Grüße.
t2k