Jak rozpocząć widoki na% nid position (od ścieżki)?


11

Mam portfolio pokazujące niektóre węzły (views3 + views pokaz slajdów za pomocą cyklu). Wszystko działa dobrze, mam domyślną ścieżkę /portfoliodostępu do tego.

Próbuję jednak ustawić ścieżkę dla każdego slajdu. Chciałbym użyć /portfolio/%nidi użyć %nidw widokach domyślnie pierwszego wyświetlanego slajdu do tego identyfikatora węzła.

Czy ktoś wie jak to możliwe? Próbowałem z interfejsem użytkownika, ale nie sądzę, że to wystarczy.

Odpowiedzi:


1

W cyklu jQuery dostępna jest opcja o nazwie startSlide. Domyślnie jest to ustawione na 0, tak jak poniżej: StartingSlide: 0

Jeśli dobrze pamiętam, istnieje karta / obszar tekstowy dla ustawień zaawansowanych, w których możesz dodawać opcje do jQuery Cycle z poziomu interfejsu użytkownika Widoków. Myślę, że możesz na przykład dodać „startSlide: 5”.

Musisz dowiedzieć się, który slajd początkowy (przekonwertować% nid, do którego wiersza w widoku jest) i dodać go jako element HTML. Gdy to jest możliwe, możemy pobrać go za pomocą jQuery i dodać jako opcję cyklu jQuery. Nie jestem pewien, który jest najlepszy sposób, ale myślę, że możesz zrobić coś takiego:

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

Będziesz musiał dodać więcej kodu, aby znaleźć tam $ startingslide. Zajrzyj do wyniku $ view-> i dowiedz się, który z wierszy jest argumentem, który będzie twoją $ startingslide. Użyj dpm () w widoku, aby przeszukać obiekt.

Mam nadzieję, że to ci pomoże. Daj mi znać, co skończyłeś :)


0

Możesz dodać odsłonięty filtr do swojego widoku, skonfigurować go tak, aby pokazywał nids greater thanpodaną wartość i odpowiednio naśladować jej adres URL.

na przykład / portfolio? nid_is_greater_than = 3

Następnie możesz ukryć swój filtr za pomocą css.


Użyłbym argumentu (filtr kontekstowy) zamiast filtru odsłoniętego - chyba że istnieją już argumenty w użyciu, a ten dodatkowy bałaganiłby ich obsługę.
Alfred Armstrong

Nie znam sposobu na porównanie wartości pola z wartością filtru kontekstowego.
magtak

Słuszna uwaga. Przepraszam, musiałem już spać.
Alfred Armstrong

0

Ponieważ twój problem dotyczy wyglądu, a nie struktury, sugeruję, aby nie rozwiązywać go na serwerze, a nie na ścieżce adresu URL, ale na kliencie z frustracją adresu URL: / portfolio # slide- [nid].

Nie czytałem kodu javascript widoków pokazu slajdów + cyklu, ale myślę, że dość łatwo jest przyjąć jego zachowanie, aby odczytać fragment adresu URL podczas inicjowania pokazu slajdów. A może zaimplementowano już taką logikę, której można użyć ...


0

Co powiesz na użycie opcji „Przepisz wyniki wyjściowe” w sekcji Pola widoków?

  1. W widokach przejdź do Konfiguruj pole (obraz)> Przepisz wyniki
  2. Zaznacz pole wyboru „Wyświetl to pole jako link”
  3. Wprowadź ścieżkę łącza (nid /) i inne szczegóły
  4. Kliknij Zastosuj
  5. Zapisz widok

Mam nadzieję że to pomoże.


0

Widoki przekazują node_view()w tym przypadku ekran i nie angażują się w znaczniki dla wiersza.

Najłatwiejszym sposobem, aby zrobić to, co chcesz, jest zaimplementowanie hook_preprocess_node(), poszukaj widoku w bieżącym kontekście, a jeśli węzeł jest renderowany jako część tego ekranu, możesz wprowadzić pewne zmiany.

SPÓJRZ NA TO:

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

W swoim node.tpl.phppliku będziesz mieć dostęp do$extra_link.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.