webform modulos modules ctools drupal drupal-views

modulos - views drupal 8



Establecer una vista drupal en un número de página aleatorio (3)

No sé cómo hacerlo desde la interfaz de usuario de Views, pero debería poder lograrlo utilizando uno de los ganchos de módulo de vistas , en este caso probablemente hook_views_pre_execute . Desafortunadamente, la documentación para estos es prácticamente inexistente, por lo que tendría que implementar el gancho en un módulo personalizado e inspeccionar el objeto pasado en la vista a través del depurador (o imprimir, var_dump, etc. declaraciones).

Debería buscar $view->pager[''current_page''] , que puede establecer en una página al azar. Desafortunadamente, si leo el código correctamente, la consulta de recuento que determina el número posible de páginas aún no se ha ejecutado en este punto, por lo que tendrá que usar una ''mejor conjetura'' o buscar una forma diferente de determinar el rango apropiado para seleccionar desde ...

NOTA: Esto de ninguna manera significa una respuesta ''autoritativa'', solo un puntero donde comenzaría a buscar, ya que nadie más ha respondido hasta ahora. Bien podría estar perdiendo una solución más obvia / fácil: /

Tengo vistas 2 instaladas y he creado una vista que se muestra en la página principal.

La vista muestra algunos enlaces de página (1 | 2 | 3 | 4 | ... etc.). Quiero saber si es posible hacer que la vista comience en una página aleatoria en lugar de comenzar siempre en la página 1.

Nota: no quiero aleatorizar la pantalla. Realmente solo quiero aleatorizar la página que carga.

Gracias

Solución posible:

En el gancho views_pre_execute utilicé esto:

$view->query->pager->set_current_page([random value]);

No estoy seguro de poder determinar el número total de páginas en el buscapersonas en este momento, pero voy a seguir investigando (el objeto $ view dado en el enganche tiene toneladas de propiedades con arreglos y otros objetos que lo complican)


Otra opción sería aleatorizar las entradas en sus vistas. Por lo tanto, su página siempre será la página 1, pero logrará su objetivo de ver algo diferente cada vez que ingrese a su sitio.

En su criterio de clasificación (en el Grupo Global) agregue Global: Aleatorio: aleatorice el orden de visualización.

(Inspirado por sugerencia en http://mydrupal.com/random_node_or_front_page_in_drupal_like_stumbleupon )


Acabo de crear un localizador personalizado que va automáticamente a la última página y creo que está relacionado con lo que estás tratando de hacer:

En project.info:

files[] = plugins/views_plugin_pager_last.inc

En project.module:

function cvoxm_views_plugins(){ return array( ''pager'' => array( ''last'' => array( ''title'' => t(''Paged output, full pager and last by default''), ''short title'' => t(''Full & Last''), ''help'' => t(''Paged output, full Drupal style and last by default''), ''handler'' => ''views_plugin_pager_last'', ''help topic'' => ''pager-last'', ''uses options'' => TRUE, ), ) ); }

Y el contenido de plugins / views_plugin_pager_last.inc es:

class views_plugin_pager_last extends views_plugin_pager_full { function pre_execute(&$query) { if(!isset($_GET[''page''])){ // TODO: Should use pager_id // Go to last page $this->set_current_page($this->get_total_items() / $this->get_items_per_page() - 1 ); $this->query(); // Rebuild query $this->update_page_info(); // Update info } } }