Eigenes Views-Filter-Handler schreiben
am 04.06.2014 - 14:42 Uhr in
Hallo zusammen,
ich beiße mir gerade daran etwas die Zähne aus und suche daher einen Vollblut-Programmierer, der mir diesen Views-Handler schreiben kann:
- Im Projekt gibt es eine eigene Entity (hook_entity_info) mit mehreren Bundles
- In einer Views-Ansicht hätte ich nun gerne einen Exposed Filter, der die Ansicht nach dem Titel der Entity filtert -> bis hierhin kein Problem. ABER:
- Der Filter soll a) ein Autocomplete-Feld oder eine Selectbox sein und b) soll es für Nutzer der Ansicht mehrere Filter geben, in denen je nach Bundle gefiltert werden soll. Anders gesagt: es soll nicht EIN Textfeld geben, in dem nach den Titeln ALLER Entities gefiltert wird, sondern ich hätte gerne mehrere Filter je nach Bundle.
Beispiel: Beispiel-Entity wäre Node, Bundles wären ein Inhaltstyp "News" und "Pressemitteilungen". Nun hätte ich gerne für News einen Exposed Filter "Nach News suchen" mit einer Selectlist der vorhandenen News und für die Pressemitteilungen hätte ich gerne einen Filter "Nach Pressemitteilungen suchen", für die es ein Autocomplete Feld gibt, in dem aber entsprechend auch nur die Titel der Pressemitteilungen erscheinen.
Ich hatte die Idee, einen eigenen Views-Handler zu schreiben, bei dem man in der Views-Verwaltungsansicht über eine Einstellung beim Erstellen des Filters festlegt, a) welche Bundles aufgelistet werden soll und b) ob es sich um eine Select-List oder ein Autocomplete-Feld handeln soll, dass der Nutzer dann sieht. Im Kern geht es also mehr oder weniger um die Darstellung und "Vorsortierung" des Exposed Filters.
Kann mir da jemand helfen?
Viele Grüße,
Tobias
- Anmelden oder Registrieren um Kommentare zu schreiben

Ok, habe diesen Beitrag jetzt
am 04.06.2014 - 15:29 Uhr
Ok, habe diesen Beitrag jetzt von den Jobs im Forum wieder entfernt, weil ich doch auf einen Großteil selber gekommen bin. So ziemlich zumindest... Hier ist zumindest schon mal ein Teil der Lösung:
option_definition() und options_form() ermöglichen es, die gewünschten Einstellungen vorzunehmen. Mit get_value_options() legt man fest, welche Werte in der Selectbox zu sehen sein sollen, weil ich jetzt einfach mal den views_handler_filter_in_operator verwendet habe:
class booking_handler_filter_resources extends views_handler_filter_in_operator {
function option_definition() {
$options = parent::option_definition();
$options['type'] = array(
'default' => FALSE,
'boolean' => FALSE,
);
return $options;
}
function options_form(&$form, &$form_state) {
parent::options_form(&$form, &$form_state);
$form['type'] = array(
'#type' => 'checkboxes',
'#title' => t('Some Checkboxes'),
'#options' => MYMODULE_get_bundles(),
'#description' => t('Some decription'),
'#default_value' => $this->options['type'],
);
}
function get_value_options() {
if (isset($this->value_options)) {
return;
}
$typen = $this->options['type'];
$resource_types = array();
foreach ($typen as $key => $typevalue) {
if ($typevalue !== 0) {
$resource_types[] = $key;
}
}
$resources = MYMODULE_get_resources_by_bundle($resource_types);
$optionlist = array();
foreach ($resources as $resource) {
$optionlist[$resource->rid] = $resource->title;
}
$this->value_options = $optionlist;
}
}
Wahrscheinlich müsste ich mir jetzt noch mal die Klassen von Views genauer anschauen, damit ich noch zwischen Selectbox und Autocomplete wählen kann... ich wollte nur eben schon mal meine Erkenntnis streuen und meinen Beitrag aus den Jobangeboten herausnehmen.
Viele Grüße,
Tobias
Zitat: Im Kern geht es also
am 04.06.2014 - 16:03 Uhr
Im Kern geht es also mehr oder weniger um die Darstellung und "Vorsortierung" des Exposed Filters.
https://drupal.org/project/views_autocomplete_filters
Kennst du das Modul? Damit lässt sich schon eine Menge anstellen.
Grüße Jenna
Danke für den Tipp. Das
am 04.06.2014 - 16:45 Uhr
Danke für den Tipp. Das bietet nur Autocomplete (ich hätte aber gerne eine Wahl zwischen Autocomplete und Selectbox) und laut Beschreibung auch nur für Nodes und für Nodes, die Teil der Ergebnissumme des Views sind. In meinem Fall hilft das leider nicht, weil ich weder Nodes filtere noch die im Autocomplete-Feld aufzulistenen Titel zur Ergebnissumme der Views gehören.