Jak ograniczyć bezpośredni dostęp do adresów URL węzłów wyświetlanych w galerii wideo utworzonej za pomocą Widoku?

10

Zrobiłem galerię wideo przy użyciu Zdjęć . Chcę tylko, aby strona była publicznie dostępna i uniemożliwiała dostęp do każdego z filmów osobno.

Filmy musiały być tworzone jako rodzaj treści, więc wszystkie mają dostępne ULR, takie jak /content/video-1itp.

Cesar
źródło

Odpowiedzi:

5

Wypróbuj moduł dostępu do videotreści i uniemożliwiaj dostęp do treści indywidualnie (lub też możesz ustawić dostęp do niego według własnego uznania roles)

Ten moduł umożliwia zarządzanie uprawnieniami do typów treści według roli i autora. Pozwala określić niestandardowe uprawnienia do wyświetlania, edycji i usuwania dla każdego typu zawartości. Opcjonalnie możesz włączyć ustawienia dostępu do treści, aby dostosować dostęp do każdego węzła treści.

Możesz także użyć modułu uprawnień do wyświetlania węzłów , ale sugeruję użycie Content access module.

(jeśli chcesz pracować z Drupalem na przyszłość, lepiej zaangażuj się w te przydatne moduły)

Yusef
źródło
Prawie to, czego potrzebowałem. W końcu kontrolowałem dostęp za pośrednictwem niskiego poziomu, ponieważ w niektórych przypadkach chciałem przekierować na stronę główną, w innych 404 itd., Więc miałem lepszą kontrolę, ale myślę, że ten moduł może działać w większości przypadków. Może z lepszym dostosowaniem w moim przypadku, ale nie miałem czasu na dochodzenie.
Cesar
3

Zainstaluj moduł uprawnień do wyświetlania węzłów .

Moduł uprawnień do wyświetlania węzłów umożliwia uprawnienia „Wyświetl własną zawartość” i „Wyświetl dowolną zawartość” dla każdego typu zawartości na stronie uprawnień, tak jak to było w Drupal 6.

Teraz przejdź do strony uprawnień i usuń Wyświetl dowolne zezwolenie na treść z typu zawartości wideo dla użytkownika Anonimowego .

Jeśli chcesz, aby tylko kilka filmów z galerii wideo było dostępnych dla anonimowego użytkownika, zainstaluj moduł odmowy dostępu .

Nikhil Banait
źródło
1

Po prostu zaktualizuj typ zawartości.

  1. Dodaj pole numeryczne, takie jak display_order itp.

  2. Ustaw wartość tego pola tylko dla tych filmów, które chcesz wyświetlić.

  3. Przejdź do ustawień widoku i ustaw;

    Użyj pagera: wyświetl określoną liczbę elementów | x przedmiotów

    gdzie x to liczba filmów, które chcesz wyświetlić

  4. Następnie zastosuj sortowanie według kolejności wyświetlania

Mam nadzieję, że to zadziała.

Iqbal
źródło
1

Myślę, że moduł Rabbit Hole robi dokładnie to, czego szukasz. Oto fragment strony opisu modułu odpowiadającej na twoje potrzeby. Powodzenia.

Rabbit Hole to moduł, który dodaje możliwość kontrolowania, co powinno się zdarzyć, gdy byt jest oglądany na własnej stronie.

Być może masz typ zawartości, który nigdy nie powinien być wyświetlany na własnej stronie, na przykład typ zawartości obrazu wyświetlany w karuzeli. Rabbit Hole może uniemożliwić dostęp do tego węzła na jego własnej stronie za pośrednictwem węzła / xxx.

Mario Awad
źródło
1

Idź po moduł króliczej dziury , robi dokładnie to samo. Cała zawartość jest dostępna za pośrednictwem widoków / kodu, ale gdy próbujesz uzyskać dostęp do strony szczegółów „content / ***”, jest to albo odmowa dostępu, albo możesz ustawić przekierowanie.

nikunj
źródło
Podwiozę go, dzięki. Na razie rozwiązałem go na niskim poziomie, ale najlepiej wiedzieć, że zrobiłem już niestandardowe moduły.
Cesar
0

1) Utwórz pole wartości logicznej w swoim typie treści.

2) Jeśli wartość zostanie wybrana jako prawda, do tego pola wideo należy dodać unikalną klasę, jeśli wartość zostanie wybrana jako fałsz, klasa nie powinna zostać dodana do tego pola wideo.

3) Napisz CSS, aby ukryć filmy, w których nie ma klasy.

Alfred Armstrong
źródło
0

Za pomocą modułu Reguły możesz zaimplementować regułę podobną do tej:

{ "rules_disallow_accesss_to_selected_urls" : {
    "LABEL" : "Disallow access to selected URLs",
    "PLUGIN" : "reaction rule",
    "OWNER" : "rules",
    "REQUIRES" : [ "rules" ],
    "ON" : { "init" : [] },
    "IF" : [
      { "text_matches" : {
          "text" : [ "site:current-page:url" ],
          "match" : "content\/video-1",
          "operation" : "regex"
        }
      }
    ],
    "DO" : [
      { "drupal_message" : {
          "message" : "Sorry, access to URLs like [site:current-page:url] is not allowed ...",
          "type" : "error"
        }
      },
      { "redirect" : { "url" : "no_access" } }
    ]
  }
}

Każdy, kto próbuje uzyskać dostęp do ścieżki względnej, content/video-1zostanie przekierowany na stronę ze ścieżką no_accessi wyświetlony zostanie odpowiedni komunikat o błędzie (dostosuj tę ścieżkę do własnych konwencji i przejrzyj komunikat do wyświetlenia).

Powyższa reguła ogranicza jedynie dostęp do ścieżki względnej content/video-1(jak w pytaniu). Jeśli chcesz rozszerzyć regułę na podobne adresy URL, zmień content\/video-1na coś podobnego content\/video-\\d+$lub dowolną odmianę, która pasuje do konwencji nazewnictwa twoich ścieżek.

Powyższa reguła (jeszcze) nie bierze pod uwagę zastosowania akcji Reguły tylko dla użytkowników z wybranymi rolami. Ale dla każdego, kto jest trochę obeznany z modułem Reguły, jest to prosty „Warunek”, który należy dodać ... np .: pominąć akcję reguł dla użytkowników z rolą edytora, administratora itp. Co można zrobić, dodając Regułę Warunek taki jak „użytkownik NIE ma roli administratora (i / lub edytora)”. W ten sposób ci specjalni użytkownicy nadal mogą przeglądać takie węzły (bez takiego dodatkowego warunku nie mogą już oglądać takich węzłów ...).

Aby eksperymentować z tą regułą we własnej witrynie, po prostu skopiuj cały kod Reguł powyżej i wklej go w nowej Regule we własnej witrynie, utworzonej za pomocą funkcji „Importuj” (dostępnej, jeśli włączony jest interfejs reguł). Następnie dokonaj dalszej edycji / poprawiania, aby dopasować go do własnego środowiska (np. Wyświetlany komunikat „Przepraszamy, ...”).

Dodatkowe udoskonalenie

W jednej z pozostałych odpowiedzi dodałeś komentarz, który zawiera:

... Chciałem w niektórych przypadkach przekierować na stronę główną, 404 w innych itd., Więc miałem lepszą kontrolę ...

Jeśli to właśnie chcesz zrobić, możesz dodatkowo udoskonalić powyższą akcję Reguły, dodając również moduł Reguły warunkowe. Dzięki temu dla każdego z „niektórych przypadków” możesz określić odpowiedni adres URL, na który chcesz przekierować. Zapoznaj się z moją odpowiedzią na „ Jak ustawić wartości niektórych pól w zależności od wartości pola listy? ”, Aby zilustrować sposób korzystania z tego modułu w ramach akcji reguł.

Pierre.Vriens
źródło