Показати пункти меню з обмеженим доступом для анонімних користувачів


9

У мене є веб-сайт, який використовує приватний модуль для того, щоб встановити доступ до вмісту, і, звичайно, на деяких моїх сторінках є пункти меню. Тепер, якщо я призначив сторінку приватною, то лише користувачі, які мають належний дозвіл, можуть бачити це, що чудово і що я хотів.

Але у мене виникають проблеми з пунктами меню, вони зникають, якщо призначений їм вміст не є загальнодоступним (тобто, призначена їм сторінка є приватною), це нормально, але я хотів би мати можливість показувати ці елементи в навігації, тому якщо користувач натисне на них, він перенесе їх на сторінку входу з проханням ввести їх дані, щоб побачити цю конкретну сторінку.

Тому я хотів би змінити поведінку пунктів меню таким чином, щоб вони завжди були видимі анонімним та зареєстрованим учасникам веб-сайту, але, натиснувши на них, ви зможете побачити сторінку (якщо ви ввійшли в систему в) або буде переспрямовано на сторінку входу (якщо анонімне)

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

Як досягти цього, будь ласка?

Лука


У мене є код на github.com/bbinkovitz/derpl/tree/master/foreshadow_menu, який може бути корисним для вас. Ймовірно, вам доведеться змінити деякі значення або ж назвати меню так само, як і я, але це може вас почати.
beth

Відповіді:


4

Ваша проблема досить поширена.

Ось дискусія, як реалізувати таку хитрість у Drupal 6 та 7 та 8: http://drupal.org/node/300607

Drupal 6 (і 7) видалив можливість відображення пунктів меню, до яких користувач не має доступу. Однак у деяких випадках бажано показати пункт меню, навіть якщо користувач не має доступу до пункту меню. Наприклад, якщо ви використовуєте механізм аутентифікації, який намагається отримати автентифікацію під час відображення 403, ви все одно хочете відобразити пункт меню, щоб користувачі отримали шанс надати облікові дані для входу.

Рішення для Drupal 7 можна знайти тут: http://drupal.org/node/300607#comment-4450062

Якщо ви віддаєте перевагу готовий модуль - можете завантажити його тут https://github.com/systemseed/always_visible


Дуже дякую. Хочеться, щоб у них був цей варіант, вбудований в Drupal
Лука

1

У мене була подібна ситуація, коли сторінки мали з’являтися в системі меню, але вміст повинен відображатися лише зареєстрованим користувачам. Остаточне рішення було дуже простим і продовжує працювати.

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

Вони не переадресовуються автоматично, тому якщо це критично, то це не рішення.

Код у двох словах:

<?php  
global $user;       
if ( $user->uid ) :
print render($content);
// or in some situations, display a view;
else : 
print 'Please <a href="https://drupal.stackexchange.com/user/login">log in</a> or <a href="https://drupal.stackexchange.com/user/register">register</a> etc etc.'
endif; 
?>

Дякую, але це не було б хорошим рішенням з багатьох причин. Це те, що я використовую інший тип шаблонової системи, і я хочу мати доступ до контенту, тому при переліку вмісту, тобто в Переглядах, це би поважало доступ.
Лука

ах, так. Сподіваюся, ви знайдете відповідь. Здається, це було б досить поширеним випадком використання.
кева
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.