Miałem bardzo podobny problem i nie tylko znalazłem rozwiązanie, ale także nauczyłem się nowych rzeczy o tym, jak działa widok. Pozwól, że podzielę się tym, czego się nauczyłem i rozwiązaniem twojego problemu.
Podczas tworzenia widoku z jednym lub kilkoma filtrami kontekstowymi, widok musi skądś odebrać wartości tych filtrów. Można to zrobić przez -
Pobieranie wartości filtru kontekstowego z adresu URL
Zazwyczaj do takich celów należy wyświetlić stronę, która ma adres URL formularza foo/%/barlub foo/bar/%pojedynczy filtr kontekstowy LUB formularza foo/%/bar/%lub foo/bar/%/%wielu filtrów
Jeśli masz wiele filtrów, wartość adresu URL, która pojawia się jako pierwsza, jest mapowana na pierwszy filtr, obok drugiego filtra i tak dalej.
Widoki pozwalają określić, co zrobić, jeśli wartości filtru nie są dostępne w adresie URL . Jest to zwykle używane w widokach blokowych .
Możesz wybierać spośród różnych działań, a następnie również konfigurować wybór.
asdfj kajsdf
Kolejną rzeczą, na którą pozwalają widoki, jest określenie, co zrobić z wartościami filtrów, jeśli znajdują się one w adresie URL, jak opisano w punkcie 1 powyżej. Typowe przypadki użycia to - tworzenie dynamicznych tytułów na podstawie wartości filtrów, sprawdzanie wartości filtrów itp.
Podczas sprawdzania poprawności wartości filtrów możesz także zmienić wartości! (Właśnie tam leży nasze rozwiązanie). Jest to bardzo podobne do sposobu, w jaki możemy zmieniać wartości $ form w wywołaniach zwrotnych walidacji formularzy drupal.
Rozwiązanie konkretnego problemu polega na użyciu bardzo podobnego kodu w sekcjach wskazanych strzałkami na powyższym obrazku.
Ten link okazał się dla mnie bardzo pomocny. Oto fragment:
Nie działało to dla mnie, ale spowodowało błąd ajax w widoku podczas zapisywania.
DrCord,
1
To nie zadziała we wszystkich okolicznościach, ale jednym z podejść do problemu w pytaniu jest użycie rzeczywistego wyświetlenia węzła B (lub węzła typu B) i ustawienie jego ścieżki tak, jak chcesz, za pomocą modułu ścieżki lub pathauto. Następnie użyj bloku widoków, aby dodać relację treści i widok, który chcesz.
Użyj filtru kontekstowego na NID, a następnie ustaw Provide default value > Content ID from URL. Następnie dodaj blok widoków do swojej strony lub zestawu stron.
Jeśli kontekst pozwala na użycie bloku widoków w samym węźle, a nie strony widoków, znacznie ułatwi to uzyskanie żądanej ścieżki i wyświetlenie żądanych widoków.
Argument widoku musi być odniesieniem do pola typu zawartości, a następnie wybierz opcję „Podaj argument domyślny” i zaznacz opcję Węzeł identyfikacyjny (coś takiego).
1) Dodaj argument „Odwołanie do pola X” 2) Sprawdź identyfikator węzła z adresu URL (dodaj domyślny argument) 3) W sekcji sprawdzania poprawności sprawdź typ treści węzła, a po ustawieniu „Typ węzła” wybierz „Identyfikator węzła
„identyfikator treści z adresu URL” podaje tylko nid. Gdybym użył odwołania do terminu, mógłbym użyć „kryteriów sprawdzania poprawności” z „nazwą terminu przekonwertowanego na identyfikator terminu”. W przypadku odwołania do węzła nie ma podobnej opcji, aby przetłumaczyć tytuł na nid. Prawdopodobnie dlatego, że tytuły niekoniecznie są unikalne.
uwe
Tak jest poprawne, ale jest konieczne argumentem musi być odwołanie do pola (nid), spróbuj tego.
Eleo,
1) Dodaj argument „Odwołanie do pola X” 2) Sprawdź identyfikator węzła z adresu URL (dodaj domyślny argument) 3) W sekcji sprawdzania poprawności sprawdź typ treści węzła, a przy ustawieniu „Typ węzła” wybierz „Identyfikator węzła”
Eleo
Rzeczywisty adres URL może mieć identyfikator nid, a aliasem ścieżki może być tytuł węzła. To działa, prawda?
SGhosh
0
Stare pytanie, ale znalazłem je w Google i pomyślałem, że podzielę się moim rozwiązaniem dla każdego, kto znajdzie je w przyszłości:
Istnieje teraz moduł o nazwie safeword, który zasadniczo robi dokładnie to, co sugerował Sumeet Pareek: (automatycznie) tworzy pole przyjazne URL-owi.
Polecam Rozszerzone Ścieżka Pseudonimy (path_alias_xt) moduł . Naprawia ten problem, instalując go bez konfiguracji, najwyraźniej jest to po prostu magia. : D Niezupełnie, ale fragment strony modułu wychwala sposób, w jaki go właśnie instalujesz i rozwiązuje to i inne problemy, ale nie opisuje, w jaki sposób moduł robi to za kulisami ... O, cóż, zawsze możemy przeczytaj kod: D Nie wspominając o naprawianiu ścieżek widoków, ale użyłem go do tego i działa idealnie.
Lista problemów, które rozwiązuje, na stronie modułu:
Czy zastanawiałeś się kiedyś, dlaczego po zdefiniowaniu aliasu typu about-us, powiedzmy, node / 123, twoje strony wciąż są pełne brzydkich, generowanych maszynowo kart i linków, takich jak / node / 123 / edit, node / 123 / revisions itp. .?
Podobnie w przypadku linków / taksonomy / term /% i / user /%: czy spodziewałeś się zobaczyć / suszy / utwór, ale dostałeś / user / 5 / utwór?
Czy uważasz, że pasek adresu przeglądarki wyświetla te brzydkie liczby zamiast aliasów?
To nie zadziała we wszystkich okolicznościach, ale jednym z podejść do problemu w pytaniu jest użycie rzeczywistego wyświetlenia węzła B (lub węzła typu B) i ustawienie jego ścieżki tak, jak chcesz, za pomocą modułu ścieżki lub pathauto. Następnie użyj bloku widoków, aby dodać relację treści i widok, który chcesz.
Użyj filtru kontekstowego na NID, a następnie ustaw
Provide default value > Content ID from URL
. Następnie dodaj blok widoków do swojej strony lub zestawu stron.Jeśli kontekst pozwala na użycie bloku widoków w samym węźle, a nie strony widoków, znacznie ułatwi to uzyskanie żądanej ścieżki i wyświetlenie żądanych widoków.
źródło
Zredagowałem zaakceptowaną odpowiedź, ale chciałem dodać tutaj aktualny kod:
Użyj opcji sprawdzonej przez PHP w ramach opcji sprawdzania poprawności w filtrze kontekstowym.
źródło
Argument widoku musi być odniesieniem do pola typu zawartości, a następnie wybierz opcję „Podaj argument domyślny” i zaznacz opcję Węzeł identyfikacyjny (coś takiego).
1) Dodaj argument „Odwołanie do pola X” 2) Sprawdź identyfikator węzła z adresu URL (dodaj domyślny argument) 3) W sekcji sprawdzania poprawności sprawdź typ treści węzła, a po ustawieniu „Typ węzła” wybierz „Identyfikator węzła
I gotowe. :)
źródło
Stare pytanie, ale znalazłem je w Google i pomyślałem, że podzielę się moim rozwiązaniem dla każdego, kto znajdzie je w przyszłości:
Istnieje teraz moduł o nazwie safeword, który zasadniczo robi dokładnie to, co sugerował Sumeet Pareek: (automatycznie) tworzy pole przyjazne URL-owi.
źródło
Polecam Rozszerzone Ścieżka Pseudonimy (path_alias_xt) moduł . Naprawia ten problem, instalując go bez konfiguracji, najwyraźniej jest to po prostu magia. : D Niezupełnie, ale fragment strony modułu wychwala sposób, w jaki go właśnie instalujesz i rozwiązuje to i inne problemy, ale nie opisuje, w jaki sposób moduł robi to za kulisami ... O, cóż, zawsze możemy przeczytaj kod: D Nie wspominając o naprawianiu ścieżek widoków, ale użyłem go do tego i działa idealnie.
Lista problemów, które rozwiązuje, na stronie modułu:
źródło