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

[gelöst]Dynamische Filter für View nach Userprofil-Angaben

Eingetragen von Maximus (129)
am 21.01.2014 - 11:41 Uhr in
  • Views
  • Drupal 7.x

Hallo Leute,

ich komm leider nicht drauf...ich möchte eine View "für dich passende Anfragen", die jedem User individuell Anfragen aus seiner Nähe und entsprechend seiner Profilangaben anzeigt. Im Profil kann der User bis jetzt einen Standort eingeben sowie eine Maximalentfernung und ein Mindestbudget.
Nun sollen die über eine Webform eingehenden Anfragen (mit Lat/Long sowie Budgetangabe) entsprechend den Usern in dieser View angezeigt werden, bei denen die Entfernung nicht außerhalb des Radius ist und das Mindestbudget erfüllt ist...Leider bekomme ich mit Views immer nur diese statischen Filter hin.

Hat jemand Ahnung?

Vorab vielen Dank,

Max

‹ Views - Tabellenausgabe - Felder Gruppierung [gelöst]Dynamische Filter für View nach Userprofil-Angaben ›
  • Anmelden oder Registrieren um Kommentare zu schreiben

Doppelpost ->

Eingetragen von zwerg (736)
am 21.01.2014 - 12:36 Uhr

Doppelpost -> http://www.drupalcenter.de/node/48773

Versuche dich erstmal daran. Entfernung und Budget sind Filter, die du kombiniert anwenden kannst.

By the way finde ich eine Lat/long-Abfrage beim Angebotseinsteller schwierig, das sollte eher über Adresse und notfalls automatischer Lat/Long-Umwandlung, z.B. mit Geolocation, erfolgen.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Webform schwierig

Eingetragen von eigentor (1424)
am 21.01.2014 - 12:59 Uhr

Wenn du die Ergebnisse hinterher flexible filtern willst, solltest du evtl. von Webform zur Eingabe der Daten Abstand nehmen.
Webform hat nur eine sehr rudimentäre Views-Integration, das sind keine richtigen Fields.

Als Alternative kannst du einen Inhaltstyp verwenden, für den die User dann die Rechte haben, ihn auszufüllen. Dann hast du richtige Fields für alle Daten, die du über Views auch ansprechen kannst, wie du willst.

Ansonsten solltest du deine Frage nochmal genauer formulieren, daß man versteht, was du machen willst.

1. Was passiert genau auf deiner Website
2. Was sind das für Anfragen und wer erstellt die
3. Was kann ein User "annehmen", was bedeutet das?

Ich habe leider nur die Hälfte verstanden.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Schonmal danke!

Eingetragen von Maximus (129)
am 21.01.2014 - 13:09 Uhr

Hallo zwerg,

schön, dass du mir antwortest! Dachte nicht, dass da noch was kommt, weils wohl zu viel auf einmal war...
Das Lat/Long habe ich auch dementsprechend gelöst:
Der User gibt Ort und Postleitzahl ein, ich hab dann mit einem Markup-field selber eine Map mit einem Geolocation-Aufruf mit Javascript reingesetzt, der nach change()-Event bei Ort und Postleitzahl das ganze Geocodiert und die Koordinaten in ein private-field, was für den User damit nicht sichtbar sein sollte, schreibt.

Viele Grüße,

Max

  • Anmelden oder Registrieren um Kommentare zu schreiben

Schonmal danke!

Eingetragen von Maximus (129)
am 21.01.2014 - 13:09 Uhr

Hallo zwerg,

schön, dass du mir antwortest! Dachte nicht, dass da noch was kommt, weils wohl zu viel auf einmal war...
Das Lat/Long habe ich auch dementsprechend gelöst:
Der User gibt Ort und Postleitzahl ein, ich hab dann mit einem Markup-field selber eine Map mit einem Geolocation-Aufruf mit Javascript reingesetzt, der nach change()-Event bei Ort und Postleitzahl das ganze Geocodiert und die Koordinaten in ein private-field, was für den User damit nicht sichtbar sein sollte, schreibt.

Viele Grüße,

Max

  • Anmelden oder Registrieren um Kommentare zu schreiben

Auch dir schonmal vielen Dank!

Eingetragen von Maximus (129)
am 21.01.2014 - 13:38 Uhr

Hallo Eigentor,

danke erstmal für deine Hilfe!

1. User können sich gegenseitig Anfragen weiterempfehlen und vermitteln, also es soll eine kleine Community werden. Wenn ein User bspw. für einen Auftrag keine Zeit hat kann er Ihn in dieser Community abgeben und hoffentlich eine Aushilfe finden, gleichzeitig an freien Tagen in der Community Aufträge erhalten, wenn etwas passendes für Ihn dabei ist.

2. Bei den Anfragen handelt es sich um Terminanfragen mit einem Ort, einem Budget, und ein paar Listboxes um die Anforderungen etwas zu spezifizieren. Anfragen hätte ich jetzt (mit der derzeitigen Implementierung als Webform geplant) sowohl alle registrierten Nutzer erstellen lassen, als auch Gäste. Bei registrierten Nutzern erscheint rechts ein Block mit der View "deine abgegebenen Anfragen". Das klappt auch schon wunderbar.
Was allerdings noch nicht klappt: die eingegangenen Webform-Submissions (Anfragen) jetzt speziell den registrierten Usern anzuzeigen, die laut ihrem Userprofil für diese Anfrage in Betracht gezogen wurden. Jeder registrierte User soll also eine View "mögliche Terminanfragen" oder ähnliches bekommen, bei der er alle die Anfragen angezeigt bekommt, die a) in seinem Umkreis stattfinden, die b) sein Mindestbudget nicht unterschreiten und c) seinem Leistungsprofil entsprechen. Ich habe dafür eine Data-Table "Anfragen" mit den Webform-Submissions angelegt.

In sql sollte das in etwa so aussehen (nur grob skizziert, falls man es so vielleicht dann besser versteht):

Select Datum, Ort, Budget, Anforderungen
From Anfragen, User
Where User.Mindestbudget < Anfragen.Budget
And Anfragen.Koordinaten - User.Koordinaten < User.Umkreis (klar muss das anders gemacht werden, Pythagoras sollte hier weiterhelfen...ich will ja nur die Entfernung der zwei Koordinaten berechnen und dann schauen ob diese kleiner User.Umkreis ist.)
And Anfragen.Anforderungen = User.Leistungen
And User.UID = %currentUser

3.Der User soll also eine View mit potentiellen Aufträgen bekommen. Sagt ihm einer dieser Aufträge zu, kann er ihn "annehmen", also rechts daneben einen Haken setzen oder einen Link klicken (da bin ich offen für alles) und damit den Auftragsstatus von "offen" auf "geschlossen" ändern.

Klappt das mit Anfragen als Webform-Submissions so etwa nicht?

Viele Grüße und schonmal vielen Dank,

Max

  • Anmelden oder Registrieren um Kommentare zu schreiben

Dafür ist Webform definitiv

Eingetragen von wla (9461)
am 21.01.2014 - 15:10 Uhr

Dafür ist Webform definitiv der falsche Ansatz. Du kommst nur über erhebliche Umwege in Views an die Informationen aus der Submission (siehe verlinktes Video). Das ist aber immer noch nicht so, daß Du daraus Deine gewünschte View bauen kannst. Also baue es auf der Basis von Inhaltstyp(en) und versende Mails mittels Rules.

Beste Grüße
Werner

  • Anmelden oder Registrieren um Kommentare zu schreiben

Das kann auch mit

Eingetragen von eigentor (1424)
am 21.01.2014 - 15:22 Uhr

Das kann auch mit Webform-Submissions klappen. Allerdings in Verbindung mit Views schwieriger.
Man kommt zwar, wenn man von Usern Daten eingeben will, immer zuerst auf Webform, aber aus den genannten Gründen machst du dir das Leben wesentlich einfacher wenn du normale Nodes mit echten Fields nimmst. Das ist auch kein Sicherheitsproblem und sieht für den User identisch aus.

Jetzt mal unabhängig davon, wie die Werte in Views hineinkommen, nehmen wir mal an, die Werte wären in Views verfügbar:

Du bräuchtest Arguments. Die Arguments wären z.B. der Umkreis, das Mindestbudget und das Leistungsprofil. Alles nicht gerade einfache Arguments, da es nicht einfache Werte sind, sondern jeweils Bereiche oder kombinierte Werte.

Jedoch durchaus machbar: im Argument Code würdest du die Berechnungen durchführen, und an Views lieferst du dann nur Werte zurück, die mit den in den Anfragen eingegebenen Feldern vergleichbar sind.

Contextual Filters

Arguments heißen ja jetzt Contextual Filters.
Du hättest also je einen Contextual Filter für jede Eigenschaft, für den du die Eigenschaft der Anfrage mit denen des Userprofiles vergleichen möchtest.

Deinen Argument Code lagerst du am saubersten in ein Custom Modul aus, dann kannst du auch schön debuggen.
Ich hatte das mal für etwas anderes so gemacht: in Views im Argument Code steht nur

<?php
if (($node = menu_get_object()) !== FALSE) {
 
$node = menu_get_object();
}
return
nobila_custom_envelopes_arguments_category($node);
?>

http://screencast.com/t/2vnBZ2EIN

Das ist jetzt für einen Node, du müßtest natürlich das User-Objekt abfragen.
nobila_custom_envelopes_arguments_category() ist die Custom Funktion im Modul, in dem du die ganzen Berechnungen durchführst, für jeden Contextual Filter am besten eine einzelne Funktion.

In der Custom Funktion kannst du dir dann aus dem User-Objekt die entsprechenden Profildaten herausholen und über den Argument Code an den View zurückschicken. Der View selber kann dann vergleichen, ob die einzelnen Werte zusammenpassen und zeigt die Anfragen entweder an oder nicht.
Ich meine, daß Contextual Filters grundsätzlich immer AND funktionieren. D.h. wenn du drei erstellst, müssen auch alle drei übereinstimmen, sonst wird nichts angezeigt. Aber das willst du, denke ich auch. Ob man da auch OR kann, frag mich was Leichteres.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Danke Euch zwei!

Eingetragen von Maximus (129)
am 21.01.2014 - 15:51 Uhr

Es ist wohl die Fülle an Möglichkeiten und den 100.000 Wegen die mir bei Drupal Kopfzerbrechen bereiten ^^ bin als Anfänger schon verdammt lange gesessen um eine funktionierende und Koordinaten liefernde Webform hinzubasteln...
umso bitterer, dass es jetzt doch wieder der falsche Ansatz ist.

Schaut das dann wirklich identisch aus? Ich habe grad testweise einen Inhaltstyp "Anfrage" angelegt und auch gleich mal Ort (vom Typ Standort), Budgetlimit (Typ Ganze Zahl) und Datum (Typ Date mit pop-up calender) reingesetzt...alles nur Kleinigkeiten, aber das ich die Bezeichnung für "Postal Code" und "City" nicht ändern kann nervt =D gleich mal das modul fieldgroup installiert um fieldsets anzulegen...leider trotzdem nicht so schön wie in der Webform, aber mit viel rumprobiererei würd ich sowas wohl schon wieder hinbekommen. Bräuchte das Inhalt "Anfrage" hinzufügen dann als Menüpunkt "Anfrage hinzufügen" im Hauptmenü...

Wenn es auch mit den Webform-Submissions gehen würde, würde ich rein aus Gründen der Motivation schon gerne dabei bleiben =P Die view "Anfragen" in meiner Datenbank beinhaltet alle eingegebenen Submissions...Wenn ich bei den ganz normalen Filterbedingungen statt einem statischen Wert "is greater than User.Budgetlimit" angeben könnte wär ich ja schon teilweise bedient. Das Filtern nach "Alle Submissions die der User erstellt hat" funktioniert ja auch...das ist doch auch dynamisch, da erst zur Laufzeit geschaut wird welche UserId ausgefiltert wird...echt ärgerlich, dass eine so plumpe und an sich einfache Sache einen derartigen Aufwand verursacht.

Das mit dem Argument Code habe ich leider nicht wirklich verstanden. Im "Advanced" Bereich in Views hab ich Contextual Filters gesehen.die filtern aber scheinbar irgendwas mit einer URL. Auch 2 Bücher zu Drupal 7 schneiden das Thema leider nur an...

Verzweiflung =D

Danke Euch trotzdem...

Viele Grüße,

Max

  • Anmelden oder Registrieren um Kommentare zu schreiben

Das mit den Contextual

Eingetragen von eigentor (1424)
am 21.01.2014 - 16:06 Uhr

Das mit den Contextual Filters / Argument Code ist auch schon ziemlich fortgeschritten. Wenn du noch nix mit Drupal gecodet hast, solltest du dich da nicht gleich rantrauen.
Das, was du vorhast, ist allerdings auch alles andere als trivial. Da solltest du dann schon deine bisherige Erfahrung mit Drupal ins Verhältnis zu deinem kühnen Plan setzen.
Diese Filterung ist ziemlich komplex, die du vorhast.

Zum Vergleich ist das etwas, als ob du drei Mal Ski gefahren bist und jetzt in Oberstorf von der Schanze springen willst. Runtergekommen sind sie noch alle...

Also entweder du engagierst jemand für teuer Geld, der dir das baut, oder du solltest ein, zwei Monate Lernen einplanen. Die ganzen Kenntnisse von Views, Templates, wie man an Daten kommt usw. bauen aufeinander auf.

Bezüglich Webform solltest du Werner und mir einfach vertrauen: vergiss es. Webform ist Fields 'light' und nicht wirklich zur Verbindung mit Views gedacht.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Alles klar, vielen Dank für

Eingetragen von Maximus (129)
am 21.01.2014 - 16:37 Uhr

Alles klar, vielen Dank für Eure Mühen!
Ich bin heute Abend im Drupal-Treffen in München dabei, vielleicht finde ich da jemanden, der Bock hat. Ich kann hald niemanden voll anstellen aber für ein Taschengeld nebenbei hätt ich etwas Budget...habs aber eh schon im Job-Angebot gepostet!

Naja, ich zieh mir dann mal "Das Drupal-Entwicklerhandbuch" von John K. VanDyk rein...muss ja irgendwie machbar sein das Ganze! ;-) WebProgrammierkenntnisse hab ich ja...nur die ganzen Schnittstellen mit Drupal...oh mein Gott =P

Vielen Dank Leute!

  • Anmelden oder Registrieren um Kommentare zu schreiben

Bücher (z.B. auch von

Eingetragen von zwerg (736)
am 22.01.2014 - 13:21 Uhr

Bücher (z.B. auch von Galileo) und Screencasts gibt es viele, du musst aber die Systematik verstehen, weil die Literatur nur Ansätze vermittelt.

Vielleicht solltest du schrittweise vorgehen. Baue dir eine View, in der du die Felder zusammenstellst, die du brauchst (Auftrag, Budget etc.). Dann probierst du dich mit den "normalen" Filtern aus und ermöglichst dem User, die Werte manuell zu ändern.

Wenn du da soweit durchblickst, versuchst du, diese Views dynamisch zu gestalten, d.h. entsprechend der im Userprofil eingegebenen Feldwerte.

Nicht immer gleich die Flinte im Korn ertränken. Hilfe von außen ist zwar gut, ermöglicht dir aber später nicht, Änderungen vorzunehmen wenn du selbst nicht den Durchblick hast.

Was auch nicht schaden kann: Schau doch mal auf der Distributionen-Seite von Drupal, was es da so gibt. Vielleicht ist dein Ansatz dort schon realisiert und du kannst es dir nachbauen. Und zu guter Letzt wäre es super, wenn du deine Lösung hier einstellen kannst ;)

  • Anmelden oder Registrieren um Kommentare zu schreiben

Ich bin schon dran, habe

Eingetragen von Maximus (129)
am 22.01.2014 - 15:26 Uhr

Ich bin schon dran, habe jetzt einen Node "Anfrage" erstellt und spiel mich grad mit den Views dazu. Aber bevor ich jetzt wieder ewig an was rumdruckse und es dann wieder eine eher ungeeignete Lösung wird, wie bei der Webform, hätte ich noch eine Frage:

Sind User-Profile dazu geeignet als Filter für Views herzuhalten oder sollte ich lieber einen Node "Profil und Leistungsangaben" für jeden User anlegen lassen, der dann die benötigten Informationen enthält, nach denen ich die "Anfragen" filtere??

Vorab vielen Dank,

Max

  • Anmelden oder Registrieren um Kommentare zu schreiben

Du brauchst keinen

Eingetragen von eigentor (1424)
am 22.01.2014 - 17:38 Uhr

Du brauchst keinen zusätzlichen Node.
User-Profile sind ab Drupal 7 voll fieldable, d.h. man kann beliebige Felder dran anhängen. Und die Werte kann man in Views wiederum auslesen.
so gesehen ist dann der User der Filter für die Anfragen.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Benutzeranmeldung

  • Registrieren
  • Neues Passwort anfordern

Aktive Forenthemen

  • Rolle erstellen nicht zu finden
  • Medien und andere Daten mit Feeds von Drupal 7 auf Drupal 10 migrieren
  • 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
Weiter

Neue Kommentare

  • Inzwischen sind wir bei
    vor 1 Woche 3 Tagen
  • Migrieren von D7 auf D8/ D10/ D11
    vor 1 Woche 3 Tagen
  • melde mich mal wieder, da ich
    vor 9 Wochen 1 Tag
  • Hey danke
    vor 9 Wochen 1 Tag
  • Update: jetzt gibt's ein
    vor 9 Wochen 2 Tagen
  • Hallo, im Prinzip habe ich
    vor 10 Wochen 2 Stunden
  • Da scheint die Terminologie
    vor 10 Wochen 5 Stunden
  • Kannst doch auch alles direkt
    vor 10 Wochen 4 Tagen
  • In der entsprechenden View
    vor 10 Wochen 4 Tagen
  • Dazu müsstest Du vermutlich
    vor 10 Wochen 4 Tagen

Statistik

Beiträge im Forum: 250236
Registrierte User: 20463

Neue User:

  • ocvk2810
  • marouane.blel
  • capilclinic

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