У меня есть веб-сайт, который использует приватный модуль для настройки доступа к контенту, и, конечно, некоторые из моих страниц имеют пункты меню. Теперь, если я настрою страницу как частную, это смогут увидеть только пользователи с соответствующими правами, что здорово, и я этого хотел.
Но у меня есть небольшая проблема с пунктами меню, они исчезают, если назначенный им контент не является общедоступным (т. Е. Назначенная им страница является Личной), это нормально, но я хотел бы иметь возможность показывать эти пункты по-прежнему в навигации, поэтому, если пользователь нажимает на них, он переходит на страницу входа в систему с просьбой ввести свои данные, чтобы увидеть эту конкретную страницу.
Поэтому я бы хотел изменить поведение пунктов меню так, чтобы они всегда были видны анонимным и зарегистрированным пользователям сайта, но когда вы нажмете на них, вы сможете увидеть страницу (если вы вошли в систему). в) или быть перенаправлены на страницу входа (если анонимно)
Я нашел это решение, которое не является лучшим для меня, так как у меня много таких страниц, поэтому я ищу лучший подход. Я даже попробовал модуль видимости пункта меню, но это тоже не помогло!
Как мне добиться этого, пожалуйста?
Лука
Ответы:
Ваша проблема довольно распространенная.
Вот обсуждение того, как реализовать такой трюк в Drupal 6 и 7 и 8: http://drupal.org/node/300607
Решение для Drupal 7 можно найти здесь: http://drupal.org/node/300607#comment-4450062
Если вы предпочитаете готовый модуль - вы можете скачать его здесь https://github.com/systemseed/always_visible
источник
У меня была похожая ситуация, когда страницы должны были отображаться в системе меню, но содержимое должно отображаться только зарегистрированным пользователям. Окончательное решение было очень простым и продолжает работать.
Вместо того, чтобы управлять доступом к контенту, шаблон узла проверяет, вошел ли пользователь в систему. Если это так, он отображает контент. Если нет, появится текст со ссылками для входа или регистрации.
Они не перенаправляются автоматически, поэтому, если это критично, это не решение проблемы.
Код в двух словах:
источник