Несмотря на некоторые отличия в отношении создания локальных задач между Drupal 5 и 6, Mac прав, что логика игнорирует записи, недоступные для текущего пользователя, довольно глубоко встроена в функции menu.inc. Если вы хотите поискать себя, начните с theme_menu_local_tasks()
и следуйте вызовам функций оттуда.
Если бы мне пришлось реализовать функцию, которую вы ищете, я бы предпочел не предлагать Macs беспорядок с настройками доступа к меню напрямую. Вместо этого я бы переопределил theme_menu_local_tasks()
с пользовательской версией и дублировал логику поиска записей там. Первый запуск будет использовать первичные и вторичные ссылки, как и раньше, а второй будет делать то же самое, что и impersonating another user (вероятно, пользователь 1 в этом случае). Таким образом, я бы получил две версии локального разметки задачи, которые мне тогда нужно было как-то различить, чтобы найти те, которые не разрешены для текущего пользователя, поэтому нужен дополнительный класс CSS.
Обратите внимание, что это все равно будет несколько уродливым, поскольку menu_primary_local_tasks()
и menu_secondary_local_tasks()
возвращают уже тематические списки, поэтому сравнение должно будет работать над разметкой, возможно каким-то образом разыгрывая теги li. Поэтому стоит потратить некоторое время на то, чтобы попытаться сделать то же самое (выбор локальных задач как двух разных пользователей), но используя функции более низкого уровня, чтобы получить записи перед тем, как сделать это.
Примечание: Если вы в конечном итоге используете user impersonation logic, обязательно используйте безопасную вторую версию, которая отключает сохранение сеанса во время олицетворения.
Спасибо, сделали именно это. Это сработало. Пользовательское олицетворение не было необходимым, но спасибо за ссылку в любом случае. –
Мне тоже нравится этот подход. Самое большое преимущество, которое я вижу по сравнению с тем, которое я ранее предлагал, заключается в том, что эта шкала лучше масштабируется: поскольку разметка генерируется какой-то функцией «diff», а не путем выбора записи в меню по ее текстовому контенту, то быстрее применять это решение если количество меню, которое вам нужно настроить, повышено. Он также не полагается на js/jQuery, который (хотя поддерживается почти каждым браузером) является «зависимостью» больше, чтобы ваши страницы отображались правильно. – mac