Как ограничить прямой доступ к URL-адресам узлов, которые отображаются в видеогалерее, созданной с помощью Views?

10

Я сделал видео галерею с использованием просмотров . Но я только хочу, чтобы эта страница была общедоступной и запрещала доступ к каждому из видео в отдельности.

Видео должно было быть создано как тип контента, поэтому все они имеют доступные ULR, такие как /content/video-1и т. Д.

Cesar
источник

Ответы:

5

Попробуйте модуль доступа к videoконтенту и запретите доступ к контенту индивидуально (или вы также можете настроить доступ к нему по своему желанию roles)

Этот модуль позволяет вам управлять разрешениями для типов контента по роли и автору. Это позволяет вам определять пользовательский вид, редактировать и удалять разрешения для каждого типа контента. При желании вы можете включить настройки доступа к контенту, чтобы вы могли настроить доступ для каждого узла контента.

Также вы можете использовать модуль Node View Permissions , но я предлагаю использовать Content access module.

(если вы хотите работать с drupal на будущее, лучше подключитесь к этим полезным модулям)

Юсеф
источник
Почти то, что мне было нужно. Наконец, я действительно контролировал доступ через низкоуровневый, потому что хотел перенаправить на домашнюю страницу в некоторых случаях, 404 в других и т. Д., Поэтому у меня был лучший контроль, но я думаю, что этот модуль мог работать в большинстве случаев. Может быть, с лучшей настройкой в ​​моем случае, но не было времени для расследования.
Цезарь
3

Установите Node View Permissions module.

Модуль разрешений на просмотр узлов включает разрешения «Просмотр собственного содержимого» и «Просмотр любого содержимого» для каждого типа содержимого на странице разрешений, как это было в Drupal 6.

Теперь перейдите на страницу разрешений и удалите Просмотр любых разрешений на контент из типов видеоконтента для анонимного пользователя .

Если вы хотите, чтобы анонимному пользователю были доступны только несколько видео из галереи видео, установите модуль Deny Access .

Нихил Банайт
источник
1

Просто обновите ваш тип контента.

  1. Добавьте числовое поле, например display_order и т. Д.

  2. Установите значение этого поля только для тех видео, которые вы хотите показать.

  3. Зайдите в настройки своего просмотра и установите;

    Использовать пейджер: отображать указанное количество элементов | х предметов

    где х - это номер видео, которое вы хотите показать

  4. Затем примените сортировку по порядку отображения

Надеюсь, это сработает.

Икбал
источник
1

Я думаю, что модуль Rabbit Hole делает именно то, что вы ищете. Вот выдержка из страницы описания модуля, отвечающей вашим потребностям. Удачи.

Rabbit Hole - это модуль, который добавляет возможность контролировать, что должно происходить, когда объект просматривается на его собственной странице.

Возможно, у вас есть тип контента, который никогда не должен отображаться на отдельной странице, например, тип контента изображения, который отображается в карусели. Кроличья нора может помешать этому узлу быть доступным на его собственной странице через узел / xxx.

Марио Авад
источник
1

Перейти на модуль кроличья нора , он делает то же самое. Весь контент доступен с помощью представлений / кода, но когда вы пытаетесь получить доступ к странице подробностей «content / ***», он либо запрещается, либо вы можете установить перенаправление.

nikunj
источник
Я подвезу его, спасибо. На данный момент я решил это на низком уровне, но лучше знать уже готовые пользовательские модули.
Сезар
0

1) Создайте поле логического значения в вашем типе контента.

2) Если значение выбрано как true, в это видео поле должен быть добавлен уникальный класс, если значение выбрано как false, класс не должен быть добавлен в это видео поле.

3) Напишите немного CSS, чтобы скрыть видео, где этот класс отсутствует.

Альфред Армстронг
источник
0

Используя модуль « Правила », вы можете реализовать правило, похожее на это:

{ "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" } }
    ]
  }
}

Любой, кто попытается получить доступ к относительному пути, content/video-1будет перенаправлен на страницу с путем no_access, и будет показано соответствующее сообщение об ошибке (адаптируйте этот путь в соответствии со своими собственными соглашениями и просмотрите сообщение, которое будет показано).

Приведенное выше правило ограничивает доступ только к относительному пути content/video-1(как в вашем вопросе). Если вы хотите расширить правило до аналогичных URL-адресов, измените его content\/video-1на что-то подобное content\/video-\\d+$или любой другой вариант, который соответствует соглашению об именах ваших путей.

Приведенное выше правило (пока) не учитывает применение действия «Правила» только для пользователей с выбранными ролями. Но для любого, кто немного знаком с модулем «Правила», это простое «условие», которое нужно добавить ... например: пропустить действие правил для пользователей с ролью редактора, администратора и т. Д. Что можно сделать, добавив правила Условие типа «пользователь НЕ имеет роли администратора (и / или редактора)». Таким образом, такие специальные пользователи все равно могут просматривать такие узлы (без такого дополнительного условия они также не могут больше просматривать такие узлы ...).

Чтобы поэкспериментировать с этим правилом на своем собственном сайте, просто скопируйте весь приведенный выше код правил и вставьте его в новое правило на своем сайте, созданное с помощью функции «Импорт» (доступно, если включен пользовательский интерфейс «Правила»). Затем отредактируйте / уточните, чтобы он соответствовал вашей среде (например, появится сообщение «Извините, ...»).

Дополнительное уточнение

В одном из других ответов вы добавили комментарий, который включает это:

... Я хотел перенаправить на домашнюю страницу в некоторых случаях, 404 в других и т. Д., Поэтому у меня был лучший контроль ...

Если это то, что вы также хотите сделать, то вы можете дополнительно усовершенствовать действие вышеупомянутых правил, добавив также модуль условных правил . При этом для каждого из ваших «некоторых случаев» вы можете указать соответствующий URL-адрес для перенаправления. Обратитесь к моему ответу « Как установить значения некоторых полей в зависимости от значения списка? » Для иллюстрации того, как использовать этот модуль в действии правил.

Pierre.Vriens
источник