Dies ist eine Follow-up-Frage zu Drupal Views exposed filter of Author name. Die folgende Frage wurde beantwortet und funktioniert. Ich kann eine Ansicht nach Benutzername filtern. Der eingegebene Benutzername wird durch Eingabe in ein Feld eingegeben und das Feld wird automatisch vervollständigt. Anstatt dies zu tun, möchte ich die Liste der Benutzer als Drop-down-Menü. Ich brauche nur einen Benutzer, um ausgewählt zu werden. Weißt du, ob das möglich ist?Drupal Ansichten ausgesetzt Filter des Autornamens als Dropdown
Antwort
Ja, das ist möglich. Es ist nicht besonders schwer, das zu tun ... aber es ist etwas langweilig. Sie müssen zwei Ansichten erstellen
- Die erste Ansicht ist eine Liste der Benutzer auf Ihrem System (eine Ansicht vom Typ
Users
). Diese Benutzerliste wird als Dropdown-Liste anstelle einer Liste angezeigt (über die Ansichtsart "Sprungmenü"). Wenn Sie auf einen Benutzer in diesem Dropdown klicken, wird die zweite Ansicht mit der Benutzer-ID des ausgewählten Benutzers als Argument in der URL aufgerufen. Diese Ansicht ist ein Block. - Die zweite Ansicht ist eine einfache Knotenliste. Es ist eine Seitenansicht bei einer bestimmten URL. Es benötigt 1 Argument, welches die UID (Benutzer-ID) des Benutzers ist.
Detaillierte Schritte
- das CTOOLS Modul http://drupal.org/project/ctools das Chaos Werkzeuge Module aktivieren zum Download. Dieses Modul bietet eine Ansichten Stil Plugin „Jump Menu“
- Erstellen Sie eine neue Ansicht vom Typ namens
Users
undNode
NICHT geben, die Sie in der Regel erstellen. In den Feldern addUser: Name
undUser: uid
. Stellen Sie für die Einstellungen vonUser: uid
sicher, dass Sie klicken Sie aufRewrite the output of the field
. Die neu geschriebene Ausgabe von das Feld solltemy_node_list/[uid]
sein. Stellen Sie sicher, dass Sie das Kontrollkästchenexclude from display
aktivieren. - Wählen Sie in den Einstellungen für
Style
in der Ansicht denJump Menu
Stil. Klicken Sie auf die Einstellungen für den Stil. Stellen Sie sicher, dass das Dropdown-FeldPath
User: uid
ausgewählt ist. - Fügen Sie der Ansicht eine Blockanzeige hinzu. Nennen Sie den Block
User Drop Down
- Speichern Sie die Ansicht
- Fügen Sie den Block
User Drop Down
zu einer beliebigen Region in Ihrem Thema, z. Inhalt Oben (normalerweise der beste) oder linke Seitenleiste. Stellen Sie sicher, dass der Block nur an den URLsmy_node_list/*
undmy_node_list
sichtbar ist, indem Sie die Einstellungen für die Blocksichtbarkeit festlegen - Erstellen Sie jetzt eine andere Ansicht vom Typ
Node
. Fügen Sie ein ArgumentfeldUser: uid
hinzu. Fügen Sie die Felder hinzu, an denen Sie interessiert sind, z.Node: title
,User: Name
usw. - Fügen Sie eine Seitenanzeige hinzu. Lassen Sie die Seite an der URL sein
my_node_list
- Speichern Sie die Ansicht. Testen Sie die Dropdown-Fenster mit der Liste der Benutzer auf dem System bei
http://yoursitename/my_node_list
http://drupal.org/project/better_exposed_filters prüfen dieses
Ich denke nicht, dass dies ein Dropdown mit einer Liste aller Benutzer geben wird. Also ich denke nicht, dass das nützlich sein wird. –
Ich glaube, Sie müssen nur wählen „Taxonomie: Begriff Die Taxonomieausdruck ID“ statt „name“.
Taxonomie ist nicht dasselbe wie Benutzer - so dass der Filter für diese Frage nicht geeignet ist. Das ist eine gute Antwort für einen Taxonomie-Filter! –
Sie benötigen ein benutzerdefiniertes Modul dafür.
Ich habe dies getan, für Drupal 7 auf diese Weise: ein Modul erstellen, sagen wir, views_more_filters
, so dass Sie eine views_more_filters.info
Datei wie dieses:
name = Views More Filters
description = Additional filters for Views.
core = 7.x
files[] = views_more_filters_handler_filter_author_select.inc
files[] = views_more_filters.views.inc
(Datei views_more_filters_handler_filter_author_select.inc
werden unsere Filter-Handler enthalten).
Eine grundlegende views_more_filters.module
Datei:
<?php
/**
* Implements of hook_views_api().
*/
function views_more_filters_views_api() {
return array('api' => 3);
}
Dann definieren Sie einen Filter in views_more_filters.views.inc
:
<?php
/**
* Implements of hook_views_data().
*/
function views_more_filters_views_data() {
return array(
'node' => array(
'author_select' => array(
'group' => t('Content'),
'title' => t('Author UID (select list)'),
'help' => t('Filter by author, choosing from dropdown list.'),
'filter' => array('handler' => 'views_more_filters_handler_filter_author_select'),
'real field' => 'uid',
)
)
);
}
Bitte beachte, dass wir author_select
als Maschinenname des Filters festgelegt, definiert Filter Handler ('handler' => 'views_more_filters_handler_filter_author_select'
) und Ein Feld, nach dem wir filtern werden ('real field' => 'uid'
).
Jetzt müssen wir unseren Filter-Handler implementieren. Da unsere Filterfunktionen wie Standard views_handler_filter_in_operator
wir einfach seine Klasse in views_more_filters_handler_filter_author_select.inc
Datei erweitern:
<?php
/**
* My custom filter handler
*/
class views_more_filters_handler_filter_author_select extends views_handler_filter_in_operator {
/**
* Override parent get_value_options() function.
*
* @return
* Return the stored values in $this->value_options if someone expects it.
*/
function get_value_options() {
$users_list = entity_load('user');
foreach ($users_list as $user) {
$users[$user->uid] = $user->name;
}
// We don't need Guest user here, so remove it.
unset($users[0]);
// Sort by username.
natsort($users);
$this->value_options = $users;
return $users;
}
}
Wir nicht viel zu tun gehabt haben: nur mit einer Liste unserer Nutzer besiedeln Optionen Array, der Rest wird behandelt nach Elternklasse.
Für weitere Informationen siehe:
- Views API
- Where can I learn about how to create a custom exposed filter for Views 3 and D7? auf Drupal Antworten
- Demystifying Views API - A developer's guide to integrating with Views
- Sophisticated Views filters, part2 - writing custom filter handler (in Russian, link to Google translator)
- Tutorial: Creating Custom Filters in Views
Dies ist die erste Lösung, die ich für dieses Problem gefunden habe, das sauber und sinnvoll ist. :) –
Tolle Lösung, nur eine Frage hier. Sollten sich dadurch alle User-Filter (einschließlich der vorhandenen) auf Drop-down ändern? –
Große Antwort. Es ist wahrscheinlich am besten, 'hook_views_data_alter' zu verwenden, da Sie ein bestehendes Array modifizieren. – argiepiano
Hier eine einfache Lösung gefunden. http://bryanbraun.com/2013/08/06/drupal-tutorials-exposed-filters-with-views
- 1. Token-Wert als Filter für Drupal View
- 2. Eingebettete Ansichten in Drupal
- 3. drupal> Ansichten> exponierter Filter> abschicken bei Änderung
- 4. Drupal Rendering unvollständige Ansichten
- 5. Drupal Ansichten require_once
- 6. Drupal-Ansichten: XML-Datei generieren
- 7. Drupal: Ansichten: Gruppierungsbeziehung in Sperrliste
- 8. Checkboxen statt in Ansichten auswählen Filter
- 9. SQL zum Filtern von Drupal-Ansichten verwenden
- 10. Drupal Ansichten: Render Null Ergebnis für Beziehung als 0
- 11. Ansichten außerhalb des Controllers in benutzerdefinierten Modul Drupal 8?
- 12. Django-Ansichten Benutzerdefinierter Filter
- 13. Filter Dropdown von einem anderen Dropdown
- 14. Onchange Dropdown-Filter-Tabelle JSON
- 15. Drupal Suchergebnis Filter, ähnlich wie drupal.org Suchergebnisseite
- 16. CGridView Filter Dropdown von Array
- 17. AngularJs Suche mit Dropdown-Filter
- 18. Drupal Ansichten Hat Taxonomieausdruck mit mehreren Begriffen
- 19. Wie style Ansichten von Pager in Drupal?
- 20. Drupal 6 Ansichten - Links Beitreten Probleme
- 21. Drupal: 3 Argumente mit Ansichten übergeben?
- 22. global PHP Feld in Ansichten (Drupal 7)
- 23. Erweiterte Suche mit Drupal (Ansichten und CCK)
- 24. Dropdown-Liste Filter funktionieren nicht
- 25. AngularJS Filter nach Dropdown-Wert
- 26. PHP-Filter (Multiple Dropdown-Liste)
- 27. durch Seite von Dropdown-Filter
- 28. Eckige Dropdown-Filter funktionieren nicht
- 29. Drupal 6 Ansichten 2: Einstellen von Datum Argumente
- 30. Drupal 8 Bootstrap Theme Dropdown auf Schweben
@Linda: Hat Ihnen die Antwort geholfen? –
Ich denke, das ist für die OP-Frage irrelevant. Jump-Menü unterscheidet sich von Ansichten Filter. Der erste springt auf eine Seite, der zweite filtert die Ergebnisse. – swan
@swan - Sie haben Recht, dass ein Ctools Jump-Menü eine andere Sache als ein Filter ist, aber da es keine Out-of-the-Box-Möglichkeit gibt, einen Dropdown-Views-Filter für den Benutzernamen auszuführen, ist dies ein cleveres Verfahren Problemumgehung. –