plugin - path drupal
Vistas de Drupal filtro expuesto del nombre del autor como menĂº desplegable (5)
Esta es una pregunta de seguimiento al filtro expuesto de Drupal Views del nombre del autor . La siguiente pregunta fue respondida y funciona. Puedo filtrar una vista por nombre de usuario. El nombre de usuario que se ingresa se ingresa escribiendo en un cuadro y el cuadro luego se completa automáticamente. En lugar de hacer esto, me gustaría la lista de usuarios como menú desplegable. Solo necesito que se seleccione un usuario. ¿Sabes si esto es posible?
Sí, esto es posible No es particularmente difícil hacer esto ... pero es un poco tedioso. Necesita crear dos vistas
- La primera vista es una lista de usuarios en su sistema (una Vista de tipo
Users
). Esta lista de usuarios se muestra como un menú desplegable en lugar de una lista (usando el estilo de vista de menú de salto). Al hacer clic en cualquier usuario dentro de este menú desplegable se llamará a la segunda vista con el uid (id. De usuario) del usuario seleccionado como argumento en la URL. Esta vista es un bloque. - La segunda vista es una simple lista de nodos. Es una vista de página en una URL particular. Se necesita 1 argumento que es el uid (id. De usuario) del usuario.
Pasos detallados
- Descargue el módulo Ctools http://drupal.org/project/ctools Habilite el Módulo de Herramientas del Caos. Este módulo proporciona un complemento de Estilo de vistas llamado "Menú de salto"
- Cree una nueva vista de tipo
Users
y NO escribaNode
que normalmente crea. En los campos agregueUser: Name
yUser: uid
. Para la configuración deUser: uid
, asegúrese de hacer clic enRewrite the output of the field
. La salida reescrita del campo debe sermy_node_list/[uid]
. Asegúrese de seleccionar la casilla de verificaciónexclude from display
. - En la configuración de
Style
en la vista, seleccione el estilo delJump Menu
. Haga clic en la configuración del estilo. Asegúrese de que el menú desplegablePath
tengaUser: uid
elegido - Agregue una visualización de bloque a la vista. Nombre el bloque
User Drop Down
- Guarde la vista
- Agregue el bloque
User Drop Down
a cualquier región en su tema, por ejemplo, la parte superior del contenido (generalmente la mejor) o la barra lateral izquierda. Asegúrate de que el bloque solo esté visible en las URLmy_node_list/*
ymy_node_list
configurando la configuración de visibilidad del bloque - Ahora crea otra vista de tipo
Node
. Agregar un campo de argumentoUser: uid
. Agregue los campos que le interesan, por ejemplo,Node: title
,User: Name
etc. - Agregue una visualización de página. Deje que la página esté en la url
my_node_list
- Guarde la vista. Pruebe el menú desplegable con su lista de usuarios en el sistema en
http://yoursitename/my_node_list
http://drupal.org/project/better_exposed_filters Comprueba este
Creo que solo tiene que elegir "Taxonomía: término ID de término de taxonomía" en lugar de "nombre".
Encontré una solución simple aquí. http://bryanbraun.com/2013/08/06/drupal-tutorials-exposed-filters-with-views
Necesitarás un módulo personalizado para eso.
He hecho esto para Drupal 7 de esta manera: crea un módulo, digamos, views_more_filters
, para que tengas un archivo views_more_filters.info
como este:
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
(El archivo views_more_filters_handler_filter_author_select.inc
contendrá nuestro controlador de filtro).
Un archivo básico de views_more_filters.module
:
<?php
/**
* Implements of hook_views_api().
*/
function views_more_filters_views_api() {
return array(''api'' => 3);
}
Luego defina su filtro en 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'',
)
)
);
}
Tenga en cuenta que establecemos author_select
como nombre de máquina del filtro, manejador de filtro definido ( ''handler'' => ''views_more_filters_handler_filter_author_select''
) y un campo que ''handler'' => ''views_more_filters_handler_filter_author_select''
por ( ''real field'' => ''uid''
).
Ahora tenemos que implementar nuestro controlador de filtros. Como nuestro filtro funciona igual que views_handler_filter_in_operator
, simplemente ampliamos su clase en el archivo views_more_filters_handler_filter_author_select.inc
:
<?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;
}
}
No hemos tenido que hacer mucho aquí: simplemente completamos el conjunto de opciones con una lista de nuestros usuarios, el resto lo manejamos los padres.
Para más información ver:
- API de vistas
- ¿Dónde puedo obtener información sobre cómo crear un filtro expuesto personalizado para las Vistas 3 y D7? en Drupal Respuestas
- Desmitificando Views API - Una guía de desarrolladores para integrarse con Views
- Filtros de vistas sofisticados, part2 - escritura de controlador de filtro personalizado (en ruso, enlace al traductor de Google)
- Tutorial: Creación de filtros personalizados en vistas