Como iniciar vistas na posição% nid (do caminho)?

11

Eu tenho um portfólio mostrando alguns nós (views3 + views slideshow using cycle). Tudo funciona bem, eu tenho um caminho padrão /portfoliopara acessá-lo.

No entanto, estou tentando definir um caminho para cada slide. Eu gostaria de usar /portfolio/%nide usar %nidnas visualizações para padronizar o primeiro slide exibido para esse ID de nó.

Alguém sabe como é possível? Eu tentei com interface do usuário, mas não acho que seja suficiente.

Apocalipse
fonte

Respostas:

1

No jQuery Cycle, há uma opção chamada initialSlide. Por padrão, isso é definido como 0, assim: StartingSlide: 0

Se bem me lembro, há uma guia / área de texto para configurações avançadas onde você pode adicionar opções ao jQuery Cycle a partir da interface do usuário do Views. Eu acho que você pode adicionar "StartingSlide: 5" por exemplo lá.

Você precisará descobrir qual é o slide inicial (converter o% nid em qual linha da exibição) e adicioná-lo como um elemento HTML. Quando isso ocorre, podemos buscá-lo com o jQuery e adicioná-lo como uma opção de ciclo do jQuery. Não sei qual é a melhor maneira, mas acho que você poderia fazer algo como:

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

Você precisará adicionar mais código para descobrir o $ startingslide, é claro. Olhe dentro de $ view-> result e descubra qual das linhas que é o argumento será o seu $ startingslide. Use dpm () na exibição para pesquisar no objeto.

Espero que isso ajude você. Deixe-me saber o que você acabou fazendo :)

Pontus Nilsson
fonte
0

Você pode adicionar um filtro exposto à sua visualização, configurá-lo para mostrar ao nids greater thano valor fornecido e imitar seu URL de acordo.

por exemplo / portfolio? nid_is_gunette_than = 3

Você pode ocultar seu filtro com css.

magtak
fonte
Eu usaria um argumento (filtro contextual) em vez de um filtro exposto - a menos que já existam argumentos em uso e este extra atrapalhe a manipulação deles.
Alfred Armstrong
Não conheço nenhuma maneira de comparar um valor de campo a um valor de filtro contextual.
magtak
Bom ponto. Devia estar meio adormecido quando publiquei o comentário anterior, desculpe.
Alfred Armstrong
0

Como o seu problema é sobre aparência, não sobre estrutura, sugiro não resolvê-lo no servidor e não no caminho da URL, mas no cliente com um endereço de URL: / portfolio # slide- [nid].

Eu não li o código javascript das visualizações slideshow + cycle, mas acho que é muito fácil adotar seu comportamento para ler o fragmento de URL na inicialização da apresentação de slides. Ou talvez já exista uma lógica desse tipo que você possa usar ...

gue
fonte
0

Que tal usar a opção 'Rewrite Output Results' na seção Fields of Views?

  1. Nas Views, vá para o campo Configure (Image)> Rewrite Results
  2. Marque a caixa de seleção 'Enviar este campo como um link'
  3. Digite o caminho do link (nid /) e outros detalhes
  4. Clique em Aplicar
  5. Salvar visualização

Espero que isto ajude.

Supriya Rajgopal
fonte
0

As visualizações passam da exibição para node_view()nesse caso e não se envolvem com a marcação da linha.

A maneira mais fácil de fazer o que você deseja é implementar hook_preprocess_node(), procurar uma Visualização no contexto atual e, se o nó estiver sendo renderizado como parte dessa exibição, você poderá fazer algumas alterações.

DÊ UMA OLHADA NESTE:

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

No seu node.tpl.phparquivo, você terá acesso a$extra_link.

Ataboy Josef
fonte