views и webform

Главные вкладки

Аватар пользователя WillWe WillWe 5 декабря 2018 в 7:48

Привет, комрады.
Немного пришлось пострадать вчера:
Хотел сделать отображение материалов на странице по дате. Дату чтоб можно было выбирать.
Казалось бы - с первым легко справляется views. Задал в контекстном фильтре Содержимое: Дата создания и все сразу работает. Но вот беда, Дата в виде CCYYMMDD. Как же сформировать url в таком виде?
Пошел в вебформу, и так и сяк ее крутил. Вставлял токены в страницу перехода, но: !!!!
она выдает мне такое: [url сайта]/вт%2012/05/2018
Ну елки палки и нигде это не настроить (или я не знаю как)!! А такой красивый календарик всплывающий!
Как их подружить между собой? Ведь само собой напрашивается такая организация календаря - стандартными так сказать способами. Ну или посоветуйте другой путь.

Комментарии

Аватар пользователя Orion76 Orion76 5 декабря 2018 в 8:21

Конфигурация » Регион и язык » Дата и время » Форматы
( /admin/config/regional/date-time/formats/add )

Добавляете свой формат даты (специальными символами),
например Y-m-d (2018-12-05)
рядом с полем ввода формата отображается демо-текущая дата.
Там же есть ссылочка на руководство по форматам.

Потом просто в вьюсе выберите созданный формат.

Ссылки станут "нормальными"..
Теоретически вьюс "нормально возьмет" дату из урла..
но могут быть нюансы..

Аватар пользователя WillWe WillWe 5 декабря 2018 в 8:35

Спасибо за подсказку. Да, работает вариант! Но есть нюанс:
Как заставить вебформу использовать именно этот формат даты? В настройках не нашел, как сменить. А по умолчанию она берет типа "Средний", который определяется в /admin/config/regional/date-time/formats/
Соответственно чтобы у меня работал url приходится менять формат там, но тогда этот неудобоваримый формат отображается в других местах, в комментах, например.

Аватар пользователя Orion76 Orion76 5 декабря 2018 в 8:45

Незнаю.. никогда не пользовался вэб-формами-)

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

Аватар пользователя WillWe WillWe 5 декабря 2018 в 9:19

Ну хорошо. Давайте сначала:
Нужно ввести на сайте дату (а потом отобразить все посты, которые были созданы тогда).
Как грамотно это принято делать в друпале?
Почему вебформа для этого не подходит?

Аватар пользователя gun_dose gun_dose 5 декабря 2018 в 9:45

Ниже написали - вебформа нужна для того, чтобы запросить данные и отправить их администрации. Ну или ещё куда-нибудь. Самый очевидный пример - форма обратной связи.

По вашему вопросу:
1. Вам нужен не контекстный фильтр, а простой раскрытый фильтр.
2. В настройках раскрытой формы фильтров ставим галочку "требуется ввод". В таком случае если фильтр пустой, то ничего не выводится. (ну или не ставить галочку, тогда будете получать сразу все материалы, если значение не введено).
3. Создаёте страницу с представлением (или добавляете блок представления на существующую страницу) и всё готово.

Аватар пользователя WillWe WillWe 5 декабря 2018 в 10:00

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

Аватар пользователя davps davps 5 декабря 2018 в 15:15

Добавляете у вьюхи поле по дате в фильтр, экспозиде его. Устанавливаете модуль Better Exposed Filters и настраиваете, через него, у поля виджет в виде календаря в попапе.

Аватар пользователя Orion76 Orion76 5 декабря 2018 в 9:38

Для "материалов" в Drupal в основном используется Node..
Не "в основном" еще используется Paragraphs, FieldCollection, Profile и прочие ECK.
Все эти сущности "филдабельны", т.е. позволяют добавлять "в себя" поля, которые хранят в БД.

Вэбформа изначально предназначалась только как инструмент для ввода пользователем некой жестко структуированной (полями формы) информации.

Т.е. все поля вэбформа (кроме свойств(property)) хранит в одном текстовом поле БД.
Т.е. с полями вэбформы невозможно работать как с нормальными полями прочих сущностей.

По ним нельзя фильтровать (стандартно) выборку во вьюсе.
Стандартно использовать режимы просмотра (view mode) и вспомогательные модули типа DisplaySuite и т.п.

Короче вэбформа - это запросить у пользователя данные и отправить их администрации.

Аватар пользователя WillWe WillWe 5 декабря 2018 в 9:46

А запросить у пользователя дату и отправить её во вьюс - чем грамотно сделать?
Я за такой подход: реализовывать что-либо сначала стандартными средствами, если не получается - мудрить, добавлять новые модули и т.п. Так что если есть простой способ для этого, буду рад его узнать