Как ограничить прямой доступ к URL-адресам узлов, которые отображаются в видеогалерее, созданной с помощью Views?
10
Я сделал видео галерею с использованием просмотров . Но я только хочу, чтобы эта страница была общедоступной и запрещала доступ к каждому из видео в отдельности.
Видео должно было быть создано как тип контента, поэтому все они имеют доступные ULR, такие как /content/video-1и т. Д.
Попробуйте модуль доступа к videoконтенту и запретите доступ к контенту индивидуально (или вы также можете настроить доступ к нему по своему желанию roles)
Этот модуль позволяет вам управлять разрешениями для типов контента по роли и автору. Это позволяет вам определять пользовательский вид, редактировать и удалять разрешения для каждого типа контента. При желании вы можете включить настройки доступа к контенту, чтобы вы могли настроить доступ для каждого узла контента.
Также вы можете использовать модуль Node View Permissions , но я предлагаю использовать Content access module.
(если вы хотите работать с drupal на будущее, лучше подключитесь к этим полезным модулям)
Почти то, что мне было нужно. Наконец, я действительно контролировал доступ через низкоуровневый, потому что хотел перенаправить на домашнюю страницу в некоторых случаях, 404 в других и т. Д., Поэтому у меня был лучший контроль, но я думаю, что этот модуль мог работать в большинстве случаев. Может быть, с лучшей настройкой в моем случае, но не было времени для расследования.
Модуль разрешений на просмотр узлов включает разрешения «Просмотр собственного содержимого» и «Просмотр любого содержимого» для каждого типа содержимого на странице разрешений, как это было в Drupal 6.
Теперь перейдите на страницу разрешений и удалите Просмотр любых разрешений на контент из типов видеоконтента для анонимного пользователя .
Если вы хотите, чтобы анонимному пользователю были доступны только несколько видео из галереи видео, установите модуль Deny Access .
Я думаю, что модуль Rabbit Hole делает именно то, что вы ищете. Вот выдержка из страницы описания модуля, отвечающей вашим потребностям. Удачи.
Rabbit Hole - это модуль, который добавляет возможность контролировать, что должно происходить, когда объект просматривается на его собственной странице.
Возможно, у вас есть тип контента, который никогда не должен отображаться на отдельной странице, например, тип контента изображения, который отображается в карусели. Кроличья нора может помешать этому узлу быть доступным на его собственной странице через узел / xxx.
Перейти на модуль кроличья нора , он делает то же самое. Весь контент доступен с помощью представлений / кода, но когда вы пытаетесь получить доступ к странице подробностей «content / ***», он либо запрещается, либо вы можете установить перенаправление.
Я подвезу его, спасибо. На данный момент я решил это на низком уровне, но лучше знать уже готовые пользовательские модули.
Сезар
0
1) Создайте поле логического значения в вашем типе контента.
2) Если значение выбрано как true, в это видео поле должен быть добавлен уникальный класс, если значение выбрано как false, класс не должен быть добавлен в это видео поле.
3) Напишите немного CSS, чтобы скрыть видео, где этот класс отсутствует.
Используя модуль « Правила », вы можете реализовать правило, похожее на это:
{"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-адрес для перенаправления. Обратитесь к моему ответу « Как установить значения некоторых полей в зависимости от значения списка? » Для иллюстрации того, как использовать этот модуль в действии правил.
Установите Node View Permissions module.
Теперь перейдите на страницу разрешений и удалите Просмотр любых разрешений на контент из типов видеоконтента для анонимного пользователя .
Если вы хотите, чтобы анонимному пользователю были доступны только несколько видео из галереи видео, установите модуль Deny Access .
источник
Просто обновите ваш тип контента.
Добавьте числовое поле, например display_order и т. Д.
Установите значение этого поля только для тех видео, которые вы хотите показать.
Зайдите в настройки своего просмотра и установите;
Использовать пейджер: отображать указанное количество элементов | х предметов
где х - это номер видео, которое вы хотите показать
Затем примените сортировку по порядку отображения
Надеюсь, это сработает.
источник
Я думаю, что модуль Rabbit Hole делает именно то, что вы ищете. Вот выдержка из страницы описания модуля, отвечающей вашим потребностям. Удачи.
источник
Перейти на модуль кроличья нора , он делает то же самое. Весь контент доступен с помощью представлений / кода, но когда вы пытаетесь получить доступ к странице подробностей «content / ***», он либо запрещается, либо вы можете установить перенаправление.
источник
1) Создайте поле логического значения в вашем типе контента.
2) Если значение выбрано как true, в это видео поле должен быть добавлен уникальный класс, если значение выбрано как false, класс не должен быть добавлен в это видео поле.
3) Напишите немного CSS, чтобы скрыть видео, где этот класс отсутствует.
источник
Используя модуль « Правила », вы можете реализовать правило, похожее на это:
Любой, кто попытается получить доступ к относительному пути,
content/video-1
будет перенаправлен на страницу с путемno_access
, и будет показано соответствующее сообщение об ошибке (адаптируйте этот путь в соответствии со своими собственными соглашениями и просмотрите сообщение, которое будет показано).Приведенное выше правило ограничивает доступ только к относительному пути
content/video-1
(как в вашем вопросе). Если вы хотите расширить правило до аналогичных URL-адресов, измените егоcontent\/video-1
на что-то подобноеcontent\/video-\\d+$
или любой другой вариант, который соответствует соглашению об именах ваших путей.Приведенное выше правило (пока) не учитывает применение действия «Правила» только для пользователей с выбранными ролями. Но для любого, кто немного знаком с модулем «Правила», это простое «условие», которое нужно добавить ... например: пропустить действие правил для пользователей с ролью редактора, администратора и т. Д. Что можно сделать, добавив правила Условие типа «пользователь НЕ имеет роли администратора (и / или редактора)». Таким образом, такие специальные пользователи все равно могут просматривать такие узлы (без такого дополнительного условия они также не могут больше просматривать такие узлы ...).
Чтобы поэкспериментировать с этим правилом на своем собственном сайте, просто скопируйте весь приведенный выше код правил и вставьте его в новое правило на своем сайте, созданное с помощью функции «Импорт» (доступно, если включен пользовательский интерфейс «Правила»). Затем отредактируйте / уточните, чтобы он соответствовал вашей среде (например, появится сообщение «Извините, ...»).
Дополнительное уточнение
В одном из других ответов вы добавили комментарий, который включает это:
Если это то, что вы также хотите сделать, то вы можете дополнительно усовершенствовать действие вышеупомянутых правил, добавив также модуль условных правил . При этом для каждого из ваших «некоторых случаев» вы можете указать соответствующий URL-адрес для перенаправления. Обратитесь к моему ответу « Как установить значения некоторых полей в зависимости от значения списка? » Для иллюстрации того, как использовать этот модуль в действии правил.
источник