Приветствую тебя, всезнающий All!
Вероятно, вопрос нубский. Тем не менее рискну задать, ибо не нашёл я внятного ответа на просторах инета (может не там или не так искал).
Ситуация такая: на сайте необходимо размещать материалы из выпускаемого нашей волонтёрской ассоциацией журнала. Надо, чтобы в блоке (на главной и некоторых других страницах) выводился список N последних журналов (пусть будет 5) в виде фотографии обложки и анонса. Далее, надо, чтобы открывалось оглавление выбранного номера (список ссылок), а в оглавлении уже ссылки на сами статьи
Создал в словаре термин "Журнал" и к нему дочерними элементами "Номер 1", "Номер 2" и т.д.
Создал типы материала "Статья журнала" и "Анонс журнала".
Сделал представление в блоке для вывода Анонсов в блок и... упёрся в стену.
По задумке, страница с оглавлением должна генерироваться представлением. Но возник вопрос, а как собственно, представление узнает, к какому именно номеру должно генерировать список ссылок на статьи?
Из блока вывода Анонсов сделал, чтобы ссылка на каждый номер была вида: /journal/Номер_журнала/contents.
Пришлось повозиться, чтобы заставить вставлять в ссылку Номер_журнала из словаря таксономии.
А теперь не могу понять, как выцепить этот номер и дать команду вьюшке, чтобы генерила ссылки на статьи из указанного номера.
Посему обращаюсь к знающим за помощью, растолкуйте пожалуйста.
Может я что-то делаю неправильно?
Комментарии
Словари:
Журнал -> Номер
Материалы:
Статья журнала (анонс отдельно не надо материалом, можно использовать анонс для показа из статьи)
поле: entity_reference на термин словаря журналы с обязательным выбором номара например используем https://www.drupal.org/project/cshs
Настройка алиасов путей - https://www.drupal.org/project/pathauto
Для списком -> представления -> включить taxonomy/term/%
Теперь у Вас есть страницы журналов и номеров.
На странице для журналов можно вывести дополнительно attachment для терминов номеров журналов, а можно просто использовать блок например https://www.drupal.org/project/hierarchical_taxonomy_menu
Благодарю за ответ!
Анонс журнала используется для краткого описания номера и фотографии обложки, а для статей отдельного анонса нет.
Но всё-таки хотелось бы понять, как можно передавать аргументы вьюшкам.
Отдельная благодарность за наводку на модули. Pathauto уже стоит, а остальные два попробую в деле.
Вот ещё хотел спросить по поводу настройки пути во вьюшках. Точнее по использованию знака "%" и стандартно используемых переменных типа "%taxonomy_term", где можно найти список всех используемых переменных?
Не получилось, как я хотел. Пришлось просто тупо создавать вьюшку для каждого номера журнала, чтобы выводить оглавление.
Так и не понял, как сделать, чтобы одна вьюшка выводила заголовки статей в номере, в зависимости от передаваемого ей параметра, чтобы путь имел вид: /journal/номер_журнала/contents или, хотя бы /journal/номер_журнала.
Парметр принимается через contextual filter. см. пример taxonomy/term/%
Вот в это я так и не въехал.
Где об этом толково написано? Крайне желательно на русском. В английском и ранее был не очень силён, а за последние годы, как говорится, и что не знал, то тоже забыл.
Честно говоря, хочется плюнуть на 8-ку и попробовать быстро сделать на 7-ке. Модуль Insert нормально не работает, плагины CKEditor либо не подключаются, либо через зад работают. Времени немного и некогда разбираться с внутренностями.
8 > cmf чем cms , и поэтому библиотека тольoе "кирпичей" >.
Лучше 1 раз увидеть https://www.youtube.com/watch?v=FUlj6-Rb7Ds
В очередной раз благодарю за желание помочь!
В таком виде с контекстными фильтрами я разобрался немного раньше, но не могу понять, как это согласовать с ЧПУ.
Дабы не плодить тем, попробую более подробно здесь пояснить ситуацию.
Термины таксономии: "Журнал" - tid = 28/синоним url = "/journal", "Номер 1" - tid = 29/синоним url = "/journal/1_2017", "Номер 2" - tid = 30/синоним url = "/journal/2_2017".
Типы материалов: "Анонс журнала", "Статья журнала"
Создал вью "Анонс журналов". Блок+страница. Вывод полей "Обложка", "Текст", "Термин таксономии"(на оглавление). Фильтрация по типу материала "Анонс журнала". Странице присваиваю путь "/journal".
Ещё две вьюхи для оглавления номеров. С url'ами страниц "/journal/1_2017" и "/journal/2_2017"
В результате по ссылке мой_сайт/journal выводит превью всех материалов, имеющих термин таксономии "Журнал", независимо от типа материала.
Ладно. Убираю синоним url у терминов таксономии. По ссылке начинает выводить как мне надо. Подключаю модуль Redirect и добавляю перенаправления с /taxonomy/term/28 на /journal, с /taxonomy/term/29 на /journal/1_2017 и с /taxonomy/term/30 на /journal/2_2017. Вроде работает, но в превью анонсов, ссылка на оглавление при наведении мышой отображается в виде "/taxonomy/term/29" и "/taxonomy/term/30".
Это напрягает.
Во-первых, хотелось бы сразу видеть как надо.
Во-вторых, делать для каждого номера вьюху для оглавления и перенаправление тоже совсем не айс.
Вот и пытаюсь понять, как это всё автоматизировать, чтобы не заниматься ерундой при добавлении на сайт соответствующих материалов.
Думается мне, что я просто не в том направлении копал всё это время. Где-то есть простое, но эффективное решение.
Извините, что "нагрузил".
В Drupal 7 в контекстных фильтрах можно было вставить свой PHP скрипт, а в восьмом этого нет. Возможно в семёрке это было реализовано только модулем Views PHP, но работало, а для восьмёрки этот модуль не реализован.
Есть пункт "Параметр запроса", но непонятно какой запрос можно туда всунуть и пока не могу найти вразумительную инфу.
В 8-ке php фильтры не любят нигде, по причине небезопасности,
впрочем как и в 7-ке, что касается алиасов их всегда можно преобраовать в нужные идентификаторы и обратно,
опять таки пример с taxonomy/term/% для контекстуального фильтра там используется идентификатор термина,
но каждый термин имеет алиас по которому и работает views покопяйте контекстуальные фильтры
в части валидаторов и и конролллеров,
посмотрите как сделан views -> taxonomy/term/% ,
если ничего не найдете тогда надо добавить свой контроллер для контекстного фильтра,
благо в 8-ке проще и быстрее благодаря включения её в ядро и использованию симфонии и ООП.
В том-то и проблема, что не могу найти толковой информации.
А ковыряться в коде просто нет времени.
Добавил для терминов "Номер 1" и "Номер 2" в поле "Описание" номера журналов по шаблону "номер журнала_год" (1_2017 и 2_2017). Во вьюшку Анонса добавил связь по термину из поля "Номер журнала" в материале "Анонс журнала".
В фильтрах вывода полей добавил поле "Описание->Термин таксономии".
Во вкладке "Перезаписать результаты", среди Подстановочных шаблонов появился "{{ description__value }}". Если выводить его текстом, то выдает как надо "1_2017", если делать из него ссылку, то добавляет символ подчёркивания "/1_2017_".
Вот как с таким бредом бороться?