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


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

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

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

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

Как мне этого добиться, пожалуйста?

Лука

Author: Community, 2012-11-29

2 answers

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

Вот обсуждение того, как реализовать такой трюк в 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

 4
Author: Eugene Fidelin, 2013-01-28 04:08:20

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

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

Они не перенаправляются автоматически, поэтому, если это критично, то это не решение.

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

<?php  
global $user;       
if ( $user->uid ) :
print render($content);
// or in some situations, display a view;
else : 
print 'Please <a href="/user/login">log in</a> or <a href="/user/register">register</a> etc etc.'
endif; 
?>
 1
Author: keva, 2012-11-29 05:32:33