¿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.