Как сделать даты приблизительными?

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

Аватар пользователя peter peter 8 января 2008 в 15:27

Вот, допустим, у меня есть архив текстов. За некоторые тексты я знаю точную дату написания. Некоторые - примерную, а иные имеют период написания.

Но поле "date"(модуля Date) - не подразумевает пустых значений. Если поле остается пустым - модуль подставляет туда единицу.
Нужно, либо добавить в числа - значения: начало, середина, конец чтоб дата имела вид, например, - "конец января 1999"
И, видимо, тогда задать для этих значений параметры начало = 1-10 числа, середина 10-20 и т.д. чтоб по этим значениям тоже можно было тексты сортировать.

Или еще проще - как-то обмануть модуль, чтоб значение числа - было необязательным. Тогда некоторые даты просто не имели бы числа (просто "Январь 1999") ну, а при сортировке хай бы сортировались по первому числу - это меня тоже полностью устраивает.

Скажите - это делается стандартными средствами - или только напильником?
_________________________________
сайт про Веню Д'ркина. http://drdom.ru
Друпал осваиваю практически с нуля. php не знаю.

Комментарии

Аватар пользователя vadbars@drupal.org vadbars@drupal.org 8 января 2008 в 15:44

Ну, поле "Дата" - это, скорее, дата размещения материала.

Как вариант для вашей задачи: вы можете создать тип материала, который будет иметь три дополнительных поля: "год", "месяц", "период". То есть при создании материала данного типа будете выбирать из списка (или вводить) год, название месяца и значение из списка "начало", "середина", "конец". Можно использовать поля CCK типа дата (модуль data).
Вывод списка публикаций средствами Views тоже не составит труда: сортировка по году, затем по месяцу, затем по значению "период".
Где-то так..

Аватар пользователя axel axel 8 января 2008 в 15:59

Ухты, никак Дрдом осваивает новые технологии? Smile Вообще и в статическом виде сайт выглядел неплохо, а теперь вот "сайт на техобслуживании". Лучшее - враг хорошего Wink

В PHP есть функция strftotime, которая позволяет задавать даты в довольно свободно виде, в т.ч. неточно, но она работает только для английского языка. Под одну из старых версий друпал (кажется 4.6) я делал модуль для конвертации дат с русского (неполная поддержка возможностей strftodate), но к друпал 5-6 он уже не подойдёт. Могу поискать, если у кого-нибудь появится желание доработать.

Аватар пользователя peter peter 8 января 2008 в 17:36

Ага, то есть, стандартных средств для этого таки нет? Ну, поищи тогда, пжалуста модуль, а я поищу добровольцев на доработать... Smile

Да, я как-то думал разобраться за недельку... да подзавис. (Ну, т.е. с вордпресом и e107 - недели хватало.)

Аватар пользователя peter peter 8 января 2008 в 17:01

Ну, как бы я модулями CCK, DATA и VIEW уже пользуюсь.
Собственно, про них и вопрос. Это именно модуль я и имел ввиду.
А если создать три отдельных числовых поля - то как по ним сортировать тогда?

Аватар пользователя vadbars@drupal.org vadbars@drupal.org 8 января 2008 в 17:14

Во Views (/admin/build/views/вашвид/edit) есть раздел "Условия сортировки" (последний, в самом низу). Там можно задавать порядок сортировки по разным полям.

Аватар пользователя peter peter 8 января 2008 в 17:43

2 vadbars>
Что-то мне сложно врубиться... эти условия разве зависимы друг от друга? То есть, сортировать по числам внутри месяцев, которые в свою очередь внутри "годов"? - это реально настроить просто условиями сортировки?

Это, а вот еще походу вопрос - а что за wysivyg редактор тут на сайте используется? Вот в котором я щас пишу?

Аватар пользователя Dan Dan 8 января 2008 в 19:14

нужно с помошью ССК сделать две даты и расчитываемое поле (computed field). Далее хитро задавать дату и отображать её в зависомости от того, как она задана.
Вот алгоритм:
- если даты одинаковые, светить эту дату;
- если различаются года, то "2005-2007 гг."
- если год одинаковый, но разные месяцы, то "январь-февраль 2006г."
- если год и месяцы одинаковые, то "12-17 июня 2007г."

Можно добавить галочку "Примерная дата". И/или "Диапазон дат" и в зависимости от их значения расчитывать значение.
В списках (views) надо делать сортировку по одному из полей.

Аватар пользователя fairwind fairwind 11 января 2008 в 10:12

Есть модуль daterange, который позволяет накладывать фильтр views на период. Подойдет?
Еще можно сказать модулю date, с какой точностью обрабатывать дату, но это действует на поле для всех материалов с этим полем. т.е. не получится в одном материале указать и дату, и месяц, а в другом только месяц

Аватар пользователя peter peter 9 марта 2009 в 12:39

В конце концов сделал более тупо. Сделал два поля - одно текстовое для даты в свободном формате, оно показывается только в тексте, [в нем можно дописать еще и место] и сортировать по нему нельзя. А второе нормальное, Date - [сокращенное, без числа], и оно показывается только в виде и по нему можно сортировать.
Криво, но как-то так... Smile