Зробіть певні сторінки доступними лише для зареєстрованих користувачів


9

Мені потрібна допомога, і ось питання:

Я будую сайт за допомогою Drupal 7.

Мені потрібно зробити певні сторінки видимими лише зареєстрованим користувачам (у кожного з яких є власне ім’я користувача / пароль), а інших користувачів потрібно просто перенаправити або показати повідомлення про помилку. Чи є ця функціональність включена в Drupal 7, чи є модуль, який робить це (щось простіше, ніж органічні групи)?

Відповіді:


7

Потрібно використовувати модуль доступу до вмісту для дозволів перегляду тонкозернистих вузлів.

Цей модуль дозволяє керувати дозволами для типів вмісту за роллю та автором. Це дозволяє вказати власні перегляд, редагувати та видаляти дозволи для кожного типу вмісту. За бажанням можна включити налаштування доступу до вмісту, щоб ви могли налаштувати доступ для кожного контентного вузла.


Цей модуль не оновлювався з 2013 року і описується як "ще не вважається стабільним". Хочете порекомендувати той, який зараз підтримується?
Blazemonger

1

Якщо ви хочете зробити це програмно у модулі чи вузлі (без фільтру введення PHP), ви можете використовувати user_is_logged_in () для чогось подібного:

<?php
if (!user_is_logged_in()) drupal_not_found();
?>

0

Хоча модуль вмісту доступу вирішує проблему добре, це додатковий модуль і він ще не стабільний на D7.

Альтернативою, що використовує лише часто використовувані модулі, є:

  1. Створіть вузли, але встановіть їх як неопубліковані

  2. Створіть подання вузла, наприклад, "вміст з обмеженою роллю". Показати повний вміст вузла, щоб повторити стандартний вузол /% дисплея.

  3. Обмежте перегляд потрібними ролями (наприклад, "Роль | Аутентифікований користувач")

  4. Встановіть шлях перегляду на щось подібне:

    restricted-content/%
  5. Встановіть контекстний фільтр від Nid.

  6. Видаліть фільтр "вміст опубліковано" за замовчуванням.

Тепер у вас буде представлення, яке працює так само, як і вузол /%, за винятком того, що він також обробляє неопублікований вміст і обмежує роль.


1
У представленнях відображатиметься список вузлів, навіть якщо вони не опубліковані, але користувачі без відповідного дозволу все ще не можуть отримати доступ до вузлів.
kiamlaluno

-1

Існує досить просте програмне рішення, ви можете прочитати роль користувача (а також якщо вона анонімна або зареєстрована) так:

$roles=$GLOBALS['user']->roles;

ви отримаєте масив з ролями поточного користувача в $ ролях.

Ви можете перенаправити цього користувача залежно від ролі, використовуючи певну логіку

drupal_goto ('url-of-the/page');
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.