Использую модуль event.
Он выводит дату, которая указывается при публикации.
Проблема в том, что выводит он ее у меня вот в таком формате:
17.10.2007 - 18:23
И это самый короткий формат, какой мы можем указать в панели управления друпала в настройках "дата и время" (admin/settings/date-time). Краткий формат даты обязательно предполагает часы и минуты.
Ок. Пусть так.
Допустим, если мы используем этот модуль event для афиши, при публикации
очередного материала мы можем указать некое число и в опции часы и минуты поставить, скажем 20.00 как время начала спектакля.
Однако вот в чем загвоздка. Если мы будем настраивать внешний вид данного материиала, нам никак не отделить эти часы минуты как время начала от даты, чтоб оформить это дело, скажем, в таком виде:
28
октября
-
НАЧАЛО СПЕКТАКЛЯ В
20.00
Все выводится одной сплошной датой.
И избавиться от этих часов/минут никак нельзя... А то можно было бы указывать дату без них, а вот для времени начала сделать в cck самостоятельное поле. Вобщем, тупик. Может, посоветуете чего-нибудь?
Комментарии
блин, не помню но преобразовать точно можно. В крайнем случае не отчаивайтесь, всегда остается preg_match
См. theme-функции в модуле event. Если есть - можно их перекрыть в своей теме.
свой формат можно задать так
<?php
$formatted_date = format_date($node->created, 'custom', 'D j M Y');
?>
нет там этого, не нашел...
да и потом то, в каком виде выводится дата определяется не темой модуля event, а настройками друпала, который допускает самый краткий формат даты лишь в таком виде... То есть в html'e дата с часами и минутами никак не структурируется, а целиком сразу задается из некой переменной...
а с preg_match мне не справиться, там сложный для меня синтаксис...
$formatted_date = format_date($node->created, 'custom', 'D j M Y');
А где эту строку прописывать?
Нашел вот здесь похожее обсуждение:
http://drupal.ru/node/7702
Признаюсь честно, я нихрена не понял.
Открываем файл include/common.inc
1055 строка:
* return
* A translated date string in the requested format.
*/
function format_date($timestamp, $type = 'medium', $format = '', $timezone = NULL) {
Ну, ок. Заменяю "medium" на "small" - так все равно ничего не меняется...
Или строка 1070:
$format = variable_get('date_format_short', 'm/d/Y - H:i');
Ок. Допустим, удаляю H:i Ничего не меняется!
Вобщем, непонимаю.
p.s. дело в том, что этот формат: 17.10.2007 - 18:23
Это вроде и есть формат small в друпаловских настройках. Только почему-то в новостях, скажем, он выводит без минут, а тут с часами и минутами. Вобщем, хорошо было бы хоть что-нибудь понять во всем этом!
нет там этого, не нашел...
Да как же нет, есть, файлик event.theme. Ладно ща поставлю event и отпишусь...
Поставил event, включил Event и Basic event. Создаю ноду типа event и выводится время начало (и конца, если даты разные). Фикс такой (без правки ядра!) — в теме в template.php такую функцию:
<?php
function phptemplate_event_nodeapi($node) {
$node->start_format = format_date($node->event_start, 'custom', 'd.m.Y', $node->start_offset);
$node->end_format = format_date($node->event_end, 'custom', 'd.m.Y', $node->end_offset);
return theme_event_nodeapi($node);
}
?>
Если нет в теме файла template.php, то какие действия?
Создать файл template.php...
Может быть это и не правильно но я вручную подправила формат короткой даты в муське, зато все заработало как надо