Views - Ein Filterfeld soll zwei Felder filtern
Eingetragen von wogga (19)
am 03.05.2010 - 15:11 Uhr in
am 03.05.2010 - 15:11 Uhr in
Hallo,
bin gerade dabei unser Firmen-Intranet mit Drupal neu aufzubauen.
Habe mir jetzt ein CCK-Formular gebastelt mit dem sich Telefonbucheinträge anlegen lassen.
Über einen View werden die Felder dann in Tabellenform ausgegeben.
Darüber habe ich ein paar exposed Filter (wie Name, Abteilung,...).
Jetzt haben bei uns allerdings viele Leute ein Festnetz und ein Funktelefon.
Ich möchte aber als Filtersuchfeld oben nur einmal ein Telefonsuchfeld haben.
Ist es möglich durch ein Telefonsuchfeld die Felder Festnetz und Funktelefon mit ODER Parameter zu durchsuchen?
Vielen Dank.
- Anmelden oder Registrieren um Kommentare zu schreiben
versuche es damit views_or
am 03.05.2010 - 17:34 Uhr
versuche es damit [do:views_or]
Gelöste Forenbeiträge mit [gelöst] im Titel ergänzen
Das Verhältnis anderen zu helfen muss höher sein, als von anderen Hilfe zu erfragen/erwarten.
Hmm, damit hab ichs schon
am 03.05.2010 - 19:06 Uhr
Hmm, damit hab ichs schon versucht.
Aber so wie ich das verstanden habe ist das nur dafür dass wenn ich oben zwei Filterfelder habe die auf die beiden entsprechenden View-Felder zeigen das diese beiden mit einer ODER Abfrage gefiltert werden. Aber ich möchte ja oben nur ein Filterfeld welches zwei Viewfelder abfrägt. Oder klappt das auch mit "Views Or" und ich habs nur nicht gepeilt? :-)
Du solltest immer im Auge
am 04.05.2010 - 08:30 Uhr
Du solltest immer im Auge behalten, was Views macht: Du klickst Dir eine SQL-Abfrage zusammen. Die Filter stellen dabei den WHERE-Teil der Abfrage dar. Wenn Du zwei Felder überprüfen willst, müssen auch zwei Bedingungen in der WHERE-Clause gestellt werden. Daher glaube ich nicht, dass Du mit einem Filter für 2 Felder hinkommen wirst (außer mit einem Stück Code, das aus einem Filter 2 WHERE-Bedingungen baut, aber das ist dann ein für Deine Anwendung erstellter Spezialfall).
Beste Grüße
Werner
.
Werner
drupal-training.de
Moderator und Drupal Trainer
* - - - - - - - - - - - - - - - - - - - - - - - - - - - *
Da ist jetzt natürlich was
am 04.05.2010 - 09:47 Uhr
Da ist jetzt natürlich was wahres dran. Da hab ich mich wohl verrannt in diese Sache.
Wäre mein Vorhaben dann mit dem Modul "views php filter" möglich?
Nein, damit kannste nur die
am 04.05.2010 - 09:58 Uhr
Nein, damit kannste nur die NIDs geben, die angezeigt werden sollen.
Gelöste Forenbeiträge mit [gelöst] im Titel ergänzen
Das Verhältnis anderen zu helfen muss höher sein, als von anderen Hilfe zu erfragen/erwarten.
Kann mir dann jemand ne
am 04.05.2010 - 10:07 Uhr
Kann mir dann jemand ne Starthilfe geben mit was ich das auf die Reihe bekommen könnte?
Ich habe das selbst noch
am 04.05.2010 - 10:42 Uhr
Ich habe das selbst noch nicht gemacht, aber nach der Dokumentation kommen hook_views_query_alter oder hook_views_preexecute in Frage um die WHERE-Clause der Query zu ändern.
Beste Grüße
Werner
.
Werner
drupal-training.de
Moderator und Drupal Trainer
* - - - - - - - - - - - - - - - - - - - - - - - - - - - *
Hmm, also so wirklich
am 04.05.2010 - 14:22 Uhr
Hmm, also so wirklich durchsteigen tuh ich mit diesen Hooks nicht.
Ich erstell mir eine Datei z.B. hook.views.inc
mit diesem Inhalt:
<?php
/**
* Stub hook documentation
*
* This hook should be placed in MODULENAME.views.inc and it will be auto-loaded.
* This must either be in the same directory as the .module file or in a subdirectory
* named 'includes'.
*
*/
function hook_views_query_alter(&$view, &$query) {
// example code here
//hier steht dann meine erweiterete Where Bedingung oder....
}
Wie wird diese Datei dann aufgerufen von meinem View?
Hooks kommen entweder in ein
am 04.05.2010 - 15:19 Uhr
Hooks kommen entweder in ein eigenes Modul oder in die Template.php datei Deines Themes. "hook" wird dann durch den Named deines Moduls oder Deines Themes ersetzt (je nachdem, was Du verwendest), also z.B. garland_views_query_alter oder beispiel_views_query_alter, wenn Dein Modul "beispiel" heißt. Für ein eigenes Modul brauchst Du 2 Files beispiel.info und beispiel.modul die beide im Folder beispiel in sites/all/modules liegen sollten. Für Views legts Du dann noch beispiel.views.inc an, wenn Du über ein eigenes Modul gehst.
Der Hook bekommt alle Views geliefert und Du mußt dafür sorgen, daß Du nur den richtigen bearbeitest (kleine IF-Abfrage). Das ist eigentlich alles.
Beste Grüße
Werner
.
Werner
drupal-training.de
Moderator und Drupal Trainer
* - - - - - - - - - - - - - - - - - - - - - - - - - - - *
Danke schomal für die
am 05.05.2010 - 11:15 Uhr
Danke schomal für die Hilfe.
Habe mich für die template.php-Variante entschieden.
Wollte jetzt zu Testzwecken einfach mal meinen View welcher bisher so aussieht:
SELECT node.nid AS nid,
node_data_field_name.field_name_value AS node_data_field_name_field_name_value,
node.type AS node_type,
node.vid AS node_vid,
node_data_field_name.field_vorname_value AS node_data_field_name_field_vorname_value,
node_data_field_name.field_telefon_value AS node_data_field_name_field_telefon_value,
node_data_field_name.field_tel_station_nid AS node_data_field_name_field_tel_station_nid
FROM node node
LEFT JOIN content_type_telefon node_data_field_name ON node.vid = node_data_field_name.vid
mit der folgenden Funktion, welche ich in die template.php geschrieben habe, einschränken das Z.b. nur gelistet wird was als Telefonnr. die 3333 eingetragen hat.
function garland_views_query_alter(&$view, &$query) {
if ($view->name == 'Telefonliste'){
$query->??????????
}
}
Ich bekomme es einfach nicht hin hier die Where-Bedingung zu erstellen. :-( Wie müsste die aussehen?
Das funktioniert, also die
am 05.05.2010 - 14:43 Uhr
Das funktioniert, also die Funktion wird aufgerufen? Eigentlich dürften hooks nur in Modulen funktionieren und nut theme-Hooks funktionieren.
Gelöste Forenbeiträge mit [gelöst] im Titel ergänzen
Das Verhältnis anderen zu helfen muss höher sein, als von anderen Hilfe zu erfragen/erwarten.
Mittlerweile bin ich auch der
am 05.05.2010 - 14:55 Uhr
Mittlerweile bin ich auch der Meinung dass die Funktion überhaupt nicht aufgerufen wird. Das alle meine Versuche die Where-Bedingung zu formulieren ohne sichtbares Ergebnis blieben kann ich einfach auch nicht glauben. Also muss ich wohl doch den Weg über ein eigenes Modul gehen.
Habe nun mein function in ein
am 06.05.2010 - 07:49 Uhr
Habe nun mein function in ein eigenes Modul ausgelagert.
Erreiche aber immer noch kein sichtbares Ergebnis, sprich mein View wird immer noch komplett angezeigt obwohl ich eine feste where-Bedingung in die function gesetzt habe.
Wie kann ich testen ob mein Modul von meinem View überhaupt benutzt wird?