¿Cómo iniciar vistas en la posición% nid (desde la ruta)?


11

Tengo una cartera que muestra algunos nodos (vistas3 + vistas de presentación de diapositivas usando ciclo). Todo funciona bien, tengo una ruta predeterminada /portfoliopara acceder a él.

Sin embargo, estoy tratando de establecer una ruta para cada diapositiva. Me gustaría usar /portfolio/%nidy usar %niden vistas para predeterminar la primera diapositiva vista a esta identificación de nodo.

Alguien sabe como es posible? He intentado con la interfaz de usuario pero no creo que sea suficiente.

Respuestas:


1

En jQuery Cycle hay una opción llamada startingSlide. Por defecto, esto se establece en 0, de esta manera: startingSlide: 0

Si no recuerdo mal, hay una pestaña / área de texto para configuraciones avanzadas donde puede agregar opciones a jQuery Cycle desde la interfaz de usuario de Vistas. Creo que puede agregar "startingSlide: 5" por ejemplo allí.

Tendrá que averiguar cuál es la diapositiva inicial (convierta el% nid en qué fila de la vista es) y agréguelo como elemento HTML. Cuando eso esté en su lugar, podemos buscarlo con jQuery y agregarlo como una opción de ciclo de jQuery. No estoy seguro de cuál es la mejor manera, pero creo que podría hacer algo como:

    function MYMODULE_views_pre_render(&$view) {
      if($view->name == "MYVIEW") {
        $view->attachment_after = $startingslide;
      }
    }

Tendrás que agregar más código para descubrir $ startingslide allí, por supuesto. Mire dentro de $ view-> result y descubra cuál de las filas es el argumento, ese será su $ startingslide. Use dpm () en la vista para buscar a través del objeto.

Espero que esto te ayudará. Déjame saber lo que terminaste haciendo :)


0

Puede agregar un filtro expuesto a su vista, configurarlo para mostrar a los nidos greater thanel valor proporcionado e imitar su URL en consecuencia.

por ejemplo / portfolio? nid_is_greater_than = 3

Luego podría ocultar su filtro con css.


Yo usaría un argumento (filtro contextual) en lugar de un filtro expuesto, a menos que ya haya argumentos en uso y este extra podría interferir con el manejo de esos.
Alfred Armstrong

No conozco ninguna forma de comparar un valor de campo con un valor de filtro contextual.
magtak

Buen punto. Debí estar medio dormido cuando publiqué el comentario anterior, lo siento.
Alfred Armstrong

0

Dado que su problema es sobre la apariencia, no sobre la estructura, sugiero no resolverlo en el servidor y no en la ruta de la URL, sino en el cliente con una URL URL: / portfolio # slide- [nid].

No he leído el código javascript de las vistas presentación de diapositivas + ciclo, pero supongo que es bastante fácil adoptar su comportamiento para leer el fragmento de URL en la inicialización de la presentación de diapositivas. O tal vez ya hay una lógica implementada que podría usar ...


0

¿Qué tal usar la opción 'Reescribir resultados de salida' en la sección Campos de Vistas?

  1. En Vistas, vaya al campo Configurar (Imagen)> Reescribir resultados
  2. Marque la casilla de verificación 'Mostrar este campo como un enlace'
  3. Ingrese la ruta de enlace (nid /) y otros detalles
  4. Haga clic en Aplicar
  5. Guardar vista

Espero que esto ayude.


0

Las vistas pasan de la pantalla a node_view()en ese caso y no se involucran con el marcado de la fila.

La forma más fácil de hacer lo que desea es implementar hook_preprocess_node(), buscar una Vista en el contexto actual y, si el nodo se representa como parte de esa pantalla, puede hacer algunas modificaciones.

MIRA ESTO:

function MYMODULE_preprocess_node(&$vars) {
  if (!empty($vars['view']) && $vars['view']->view_name == 'foo') {
    $nid = $vars['node']->nid;
    $vars['extra_link'] = l('Some text', "node/$nid");
  }
}

En su node.tpl.phparchivo tendrá acceso a$extra_link.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.