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.