У меня есть поле field_page_menu_category (taxonomy reference) для типа материала Страница. Я использую это поля для классификации материалов в соответствии с разделами сайта.
Чтобы упростить добавление материалов редакторам сайта я хочу добавить кнопку "добавить материал" над каждым представлением, при нажатии на которую откроется стандартная форма добавления материала с заполненным полем раздел сайта. Для этого установил модуль Prepopulate, чтобы по ссылке передавать значение поля для каждого представления. Такая потребность возникла, т.к. структура сайта сложная и пользователю тяжело искать нужный раздел в выпадающем списке или писать его в поле типа autocomplete.
Каждое представление имеет фильтр по полю field_page_menu_category.
Например для пункта меню Аналитика показываем все страницы, в которых field_page_menu_category='Аналитика'.
Теперь добавляю кнопку как header attachment для view:
И все вроде работает, но яимеются 2 проблемы:
1) Я не могу использовать replacement tokens, когда представление возвращает 0 результатов, т.к. параметр, используемый в ссылке берется из поля field_page_menu_category первого элемента результатов представления (см. скрин) .
Соответственно, не получается заставить кнопку передать параметр в "пустых" разделах сайтах. Как только добавляю хоть одну страницу в этот раздел - все работает.
2) Я не могу ограничить доступ к кнопке добавления материала. Ее нужно показывать только авторизованным пользователям с определенной ролью.
Какие есть варианты решения данной задачи? Может, на уровне theme hooks или twig?
И вообще интересно, как Вы организоваваете размещение редакторами материалов по разделам сайта, чтобы это не было сложно для них?
Комментарии
У любой вьюхи можно переопределить необходимые шаблоны на уровне темы. Реализуйте свою логику в этих шаблонах
Проблема в том, что я не могу из шаблона получить доступ к значению фильтров вьюхи или я ошибаюсь?
ЕМНИП, фильтры это ж просто get параметры.
https://api.drupal.org/api/drupal/includes%21common.inc/function/drupal_...
А как в Drupal 8 я могу их получить в twig?
https://drupal.stackexchange.com/questions/217784/how-to-retrieve-get-pa...
Не смог применить полученную информацию ) Мне кажется, все же к фильтрам представления нельзя обращаться как к get парамтрам.
У вас как выглядит урл с применённым фильтром?
На внешнем уровне url не меняется. Это если я применяю exposed filters к данному полю, то в адресной строке появляются get параметры со значениями. Но такой вариант мне не подходит
Пишите свой плагин для шапки вьюса. В него передавайте аргумент вьюхи.
Эххх )))