toke plugin org chaos drupal drupal-6 drupal-views

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

  1. 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.
  2. 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

  1. 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"
  2. Cree una nueva vista de tipo Users y NO escriba Node que normalmente crea. En los campos agregue User: Name y User: uid . Para la configuración de User: uid , asegúrese de hacer clic en Rewrite the output of the field . La salida reescrita del campo debe ser my_node_list/[uid] . Asegúrese de seleccionar la casilla de verificación exclude from display .
  3. En la configuración de Style en la vista, seleccione el estilo del Jump Menu . Haga clic en la configuración del estilo. Asegúrese de que el menú desplegable Path tenga User: uid elegido
  4. Agregue una visualización de bloque a la vista. Nombre el bloque User Drop Down
  5. Guarde la vista
  6. 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 URL my_node_list/* y my_node_list configurando la configuración de visibilidad del bloque
  7. Ahora crea otra vista de tipo Node . Agregar un campo de argumento User: uid . Agregue los campos que le interesan, por ejemplo, Node: title , User: Name etc.
  8. Agregue una visualización de página. Deje que la página esté en la url my_node_list
  9. Guarde la vista. Pruebe el menú desplegable con su lista de usuarios en el sistema en http://yoursitename/my_node_list


Creo que solo tiene que elegir "Taxonomía: término ID de término de taxonomía" en lugar de "nombre".



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: