Come avviare le visualizzazioni nella posizione% nid (dal percorso)?


11

Ho un portfolio che mostra alcuni nodi (views3 + view slideshow usando il ciclo). Tutto funziona bene, ho un percorso predefinito /portfolioper accedervi.

Tuttavia, sto cercando di impostare un percorso per ogni diapositiva. Vorrei utilizzare /portfolio/%nide utilizzare %nidnelle viste per impostazione predefinita la prima diapositiva visualizzata a questo ID nodo.

Qualcuno sa come è possibile? Ho provato con l'interfaccia utente ma non penso che sia abbastanza.

Risposte:


1

In jQuery Cycle c'è un'opzione chiamata startingSlide. Di default questo è impostato su 0, in questo modo: startingSlide: 0

Se ricordo correttamente c'è una tab / textarea per le impostazioni avanzate in cui è possibile aggiungere opzioni a jQuery Cycle dall'interfaccia utente di Views. Penso che puoi aggiungere "startingSlide: 5" per esempio lì.

Dovrai scoprire qual è la diapositiva iniziale (converti% nid in quale riga nella vista è) e aggiungila come elemento HTML. Quando è a posto, possiamo recuperarlo con jQuery e aggiungerlo come opzione Ciclo jQuery. Non sono sicuro di quale sia il modo migliore, ma penso che potresti fare qualcosa del tipo:

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

Dovrai aggiungere altro codice per scoprire $ startingslide lì ovviamente. Guarda dentro $ view-> result e scopri quale delle righe è l'argomento, che sarà la tua $ startingslide. Utilizzare dpm () sulla vista per cercare l'oggetto.

Spero che questo ti possa aiutare. Fammi sapere cosa hai finito per fare :)


0

È possibile aggiungere un filtro esposto alla vista, configurarlo per mostrare ai nidici greater thanil valore fornito e imitare l'URL di conseguenza.

per esempio / portfolio? nid_is_greater_than = 3

È quindi possibile nascondere il filtro con CSS.


Userei un argomento (filtro contestuale) piuttosto che un filtro esposto - a meno che non ci siano già argomenti in uso e questo extra rovinerebbe la gestione di quelli.
Alfred Armstrong,

Non conosco alcun modo per confrontare un valore di campo con un valore di filtro contestuale.
magtak,

Buon punto. Devo essere stato mezzo addormentato quando ho pubblicato il commento precedente, scusa.
Alfred Armstrong,

0

Poiché il tuo problema riguarda l'aspetto, non la struttura, ti suggerisco di non risolverlo sul server e non nel percorso dell'URL, ma sul client con un impegno URL: / portfolio # slide- [nid].

Non ho letto il codice javascript delle viste slideshow + ciclo, ma immagino sia abbastanza facile adottare il suo comportamento per leggere il frammento di URL all'inizializzazione della presentazione. O forse esiste già una tale logica implementata che potresti usare ...


0

Che ne dite di usare l'opzione "Riscrivi risultati di output" nella sezione Campi delle viste?

  1. In Viste, vai al campo Configura (immagine)> Riscrivi risultati
  2. Seleziona la casella di controllo "Invia questo campo come link"
  3. Immettere il percorso del collegamento (nid /) e altri dettagli
  4. Clicca su Applica
  5. Salva vista

Spero che questo ti aiuti.


0

node_view()In questo caso le visualizzazioni passano alla visualizzazione e non vengono coinvolte nel markup per la riga.

Il modo più semplice per fare ciò che vuoi è implementare hook_preprocess_node(), cercare una vista nel contesto corrente e se il nodo viene visualizzato come parte di quella visualizzazione, puoi apportare alcune modifiche.

GUARDA QUESTO:

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");
  }
}

Nel tuo node.tpl.phpfile avrai accesso a$extra_link.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.