PDA

Просмотр полной версии : вывод даты в виде: 12 мартобря 2006 г.


Valery Romanchev
17.05.2006, 16:43
config.cache_clearAtMidnight = 1

lib.data_top = COA
lib.data_top.10=TEXT
lib.data_top.10{
data= date:U
strftime= %e
}

lib.data_top.20 = CASE
lib.data_top.20 {
key.data = date:U
key.strftime= %m
01 = TEXT
01.value = января
02 = TEXT
02.value = февраля
03 = TEXT
03.value = марта
04 = TEXT
04.value = апреля
05 = TEXT
05.value = мая
06 = TEXT
06.value = июня
07 = TEXT
07.value = июля
08 = TEXT
08.value = августа
09 = TEXT
09.value = сентября
10 = TEXT
10.value = октября
11 = TEXT
11.value = ноября
12 = TEXT
12.value = декабря
stdWrap.wrap =  | 
}

lib.data_top.30=TEXT
lib.data_top.30{
data= date:U
strftime= %Y
wrap = | г.
}


см. также
http://www.mcuniverse.com/05/Current_Date.83.0.html

azukari
16.07.2007, 19:02
А вот сделать такой финт ушами не с текущей датой, а с датой из поля я не смог. В сорсы не смотрел на эту тему, но судя по всему stdWrap.strftime происходит после stdWrap.cObject и других контент-преобразовательных функций и до всяких wrap'ов.

То есть делмаем например
text = TEXT
text {
field = tstamp
strftime = %m
cObject = CASE
...
}
и получаем на выходе "январь" или "January" в зависимости от локали (исходя из 1 января 1970 года)

void
17.07.2007, 01:43
А так:
text = COA
text.10 = TEXT
text.10.field = tstamp
text.10.strftime = %e
text.20 = CASE
text.20.key.field = tstamp
text.20.key.strftime = %m
и далее по тексту?

azukari
17.07.2007, 05:44
Неверный пример привел. Суть в том что нет field. Есть только контент этого поля, который передается в stdWrap. Конкретно я боролся с выдачей даты в новостях (tt_news).

void
18.07.2007, 04:08
Сниппет для tt_news:

plugin.tt_news.displayList.date_stdWrap{
strftime >
cObject = COA
cObject.10 = TEXT
cObject.10{
field = datetime
strftime = %d
}
cObject.20 = CASE
cObject.20{
key.field = datetime
key.strftime = %m
01 = TEXT
01.value = января
02 = TEXT
02.value = февраля
03 = TEXT
03.value = марта
04 = TEXT
04.value = апреля
05 = TEXT
05.value = мая
06 = TEXT
06.value = июня
07 = TEXT
07.value = июля
08 = TEXT
08.value = августа
09 = TEXT
09.value = сентября
10 = TEXT
10.value = октября
11 = TEXT
11.value = ноября
12 = TEXT
12.value = декабря
stdWrap.wrap =  | 
}
cObject.30 = TEXT
cObject.30{
field = datetime
strftime = %Y
wrap = | г.
}
}

Артем
13.02.2008, 09:03
config.cache_clearAtMidnight = 1

lib.data_top = COA
lib.data_top.10=TEXT
lib.data_top.10{
data= date:U
strftime= %e
}

lib.data_top.20 = CASE
lib.data_top.20 {
key.data = date:U
key.strftime= %m
01 = TEXT
01.value = января
02 = TEXT
02.value = февраля
03 = TEXT
03.value = марта
04 = TEXT
04.value = апреля
05 = TEXT
05.value = мая
06 = TEXT
06.value = июня
07 = TEXT
07.value = июля
08 = TEXT
08.value = августа
09 = TEXT
09.value = сентября
10 = TEXT
10.value = октября
11 = TEXT
11.value = ноября
12 = TEXT
12.value = декабря
stdWrap.wrap =  | 
}

lib.data_top.30=TEXT
lib.data_top.30{
data= date:U
strftime= %Y
wrap = | г.
}


см. также
http://www.mcuniverse.com/05/Current_Date.83.0.html





Попробовал использовать для вывода даты, число при этом почему то не отображается.

thebat
02.03.2008, 15:43
Очень хорошо, спасибо. С месяцами все ясно, а как насчет дней недели? Написал 30 = CASE
30 {
key.data = date:U
key.strftime = %A
01 = TEXT
01.value = понедельник
02 = TEXT
02.value = вторник
03 = TEXT
03.value = среду
04 = TEXT
04.value = четверг
05 = TEXT
05.value = пятницу
06 = TEXT
06.value = субботу
07 = TEXT
07.value = воскресенье
stdWrap.wrap =  | 
}..., не работает, почему?

azukari
02.03.2008, 15:57
Потому что надо %A (полное название дня недели в текущей локали) заменить на %u (номер дня недели: 1-7). 01-07 соответственно заменить на 1-7.

http://ru2.php.net/strftime

thebat
02.03.2008, 16:15
Результат30 = CASE
30 {
key.data = date:U
key.strftime = %u
1 = TEXT
1.value = понедельник
2 = TEXT
2.value = вторник
3 = TEXT
3.value = среду
4 = TEXT
4.value = четверг
5 = TEXT
5.value = пятницу
6 = TEXT
6.value = субботу
7 = TEXT
7.value = воскресенье
stdWrap.wrap =  | 
}Работает.

margol
13.03.2008, 13:07
Воспользовалась кодом с этой темы. Замечательно работает для list. А можно ли сделать, чтобы то же самое работало и для latest и для single? Вставка того же куска, только с заменой
plugin.tt_news.displayList.date_stdWrap{
на
plugin.tt_news.displayLatest.date_stdWrap{
не помогла, да и не рационально это.
Может кто подкинет кусочек кода, чтобы все разом, а?

thebat
13.03.2008, 19:10
Вы должно быть, что-то не правильно прописали, будьте внимательны. Я, к примеру, написал вот так,plugin.tt_news {
displayLatest {
date_stdWrap {
strftime >
cObject = COA
cObject.10 = TEXT
cObject.10 {
field = datetime
strftime = %d
}
cObject.20 = CASE
cObject.20 {
key.field = datetime
key.strftime = %m
01 = TEXT
01.value = сiчня
02 = TEXT
02.value = лютого
03 = TEXT
03.value = марта
04 = TEXT
04.value = квітня
05 = TEXT
05.value = травня
06 = TEXT
06.value = червня
07 = TEXT
07.value = липня
08 = TEXT
08.value = серпня
09 = TEXT
09.value = вересня
10 = TEXT
10.value = жовтня
11 = TEXT
11.value = листопада
12 = TEXT
12.value = грудня
stdWrap.wrap =  | 
}
cObject.30 = TEXT
cObject.30 {
field = datetime
strftime = %Y
wrap = | року.
}
}
}
}…(наименование месяцев на украинском языке.), и это у меня лично работает.

margol
14.03.2008, 12:44
Спасибо за ответ, но ваш код у меня не работает. Странно...
И этот не работает:
plugin.tt_news.displayLatest.date_stdWrap{
strftime >
cObject = COA
cObject.40 = TEXT
cObject.40{
field = datetime
strftime = %d
}
cObject.50 = CASE
cObject.50{
key.field = datetime
key.strftime = %m
01 = TEXT
01.value = января
02 = TEXT
02.value = февраля
03 = TEXT
03.value = марта
04 = TEXT
04.value = апреля
05 = TEXT
05.value = мая
06 = TEXT
06.value = июня
07 = TEXT
07.value = июля
08 = TEXT
08.value = августа
09 = TEXT
09.value = сентября
10 = TEXT
10.value = октября
11 = TEXT
11.value = ноября
12 = TEXT
12.value = декабря
stdWrap.wrap =  | 
}
cObject.60 = TEXT
cObject.60{
field = datetime
strftime = %Y
wrap = | г.
}
}

azukari
29.03.2008, 02:58
Для LIST, LATEST, SINGLE

# Фиксим локаль для новостей
[globalVar = GP:L = 1]
[else]
plugin.tt_news {
displayLatest {
date_stdWrap >
date_stdWrap {
strftime >
cObject = COA
cObject.10 = TEXT
cObject.10{
field = datetime
strftime = %e
}
cObject.20 = CASE
cObject.20{
key.field = datetime
key.strftime = %m
01 = TEXT
01.value = января
02 = TEXT
02.value = февраля
03 = TEXT
03.value = марта
04 = TEXT
04.value = апреля
05 = TEXT
05.value = мая
06 = TEXT
06.value = июня
07 = TEXT
07.value = июля
08 = TEXT
08.value = августа
09 = TEXT
09.value = сентября
10 = TEXT
10.value = октября
11 = TEXT
11.value = ноября
12 = TEXT
12.value = декабря
stdWrap.wrap =  | 
}
cObject.30 = TEXT
cObject.30{
field = datetime
strftime = %Y
wrap = | г.
}
}
}
displaySingle.date_stdWrap >
displaySingle.date_stdWrap < .displayLatest.date_stdWrap
displayList.date_stdWrap >
displayList.date_stdWrap < .displayLatest.date_stdWrap
}
[global]

_Michael
01.04.2008, 17:10
А как сделать чтоб в AMENU тоже название месяца выводилось не December а к примеру Грудень (на укр.)?

margol
08.04.2008, 16:19
Спасибо за код, то что надо!
Но действительно интересно как и в AMENU сделать их русскими. Конструкция типа:
displayArchive.date_stdWrap >
displayArchive.date_stdWrap < .displayLatest.date_stdWrap
или
displayAmenu.date_stdWrap >
displayAmenu.date_stdWrap < .displayLatest.date_stdWrap
не помогает.

И вопрос по календарю newscalendar
Этот код :

config.cache_clearAtMidnight = 1

lib.calendar = COA

lib.calendar.10=TEXT
lib.calendar.10{
data= date:U
strftime= %d
wrap = <center><b><font size="-1" align="right"> Сегодня&nbsp;|&nbsp;
}

lib.calendar.20 = CASE
lib.calendar.20 {
key.data = date:U
key.strftime= %m
01 = TEXT
01.value = января
02 = TEXT
02.value = февраля
03 = TEXT
03.value = марта
04 = TEXT
04.value = апреля
05 = TEXT
05.value = мая
06 = TEXT
06.value = июня
07 = TEXT
07.value = июля
08 = TEXT
08.value = августа
09 = TEXT
09.value = сентября
10 = TEXT
10.value = октября
11 = TEXT
11.value = ноября
12 = TEXT
12.value = декабря
stdWrap.wrap = &nbsp;|&nbsp;
}

lib.calendar.30=TEXT
lib.calendar.30{
data= date:U
strftime= %Y
wrap = |&nbsp;г.
}

lib.calendar.40 = CASE
lib.calendar.40 {
data = date:U
strftime = %u
1 = TEXT
1.value = понедельник
2 = TEXT
2.value = вторник
3 = TEXT
3.value = среда
4 = TEXT
4.value = четверг
5 = TEXT
5.value = пятница
6 = TEXT
6.value = суббота
7 = TEXT
7.value = воскресенье
stdWrap.wrap = &nbsp;|&nbsp;</font></b></center>
}

lib.calendar.50 < plugin.tx_newscalendar_pi1
lib.calendar.50 {
show.allRecords = 1
calendar.startWeekDay = 1
render{
displayType=1
# monthLinkDisplay = 1
dayNameLength = 1
singleView = 7
backPage = 21
contextMenuLink = LEFT
listPage = 22
startingPoint = 14,11
}
}

работает как показано на картинке. Как сделать, чтобы и April, то есть названия месяцев были русскими в самом календаре?

_Michael
08.04.2008, 21:17
plugin.tt_news.archiveTitleCObject >
plugin.tt_news.archiveTitleCObject = COA
plugin.tt_news.archiveTitleCObject {
10 = TEXT
10 {
field = start
strftime >
cObject = COA
cObject.10 = CASE
cObject.10 {
key.field = start
key.strftime = %m
01 = TEXT
01.value = Січень
02 = TEXT
02.value = Лютий
03 = TEXT
03.value = Березень
04 = TEXT
04.value = Квітень
05 = TEXT
05.value = Травень
06 = TEXT
06.value = Червень
07 = TEXT
07.value = Липень
08 = TEXT
08.value = Серпень
09 = TEXT
09.value = Вересень
10 = TEXT
10.value = Жовтень
11 = TEXT
11.value = Листопад
12 = TEXT
12.value = Грудень
stdWrap.wrap = &nbsp;|&nbsp;
}
cObject.20 = TEXT
cObject.20 {
field = start
strftime = %Y
}
}
}
Вот как с архивом сделать. Разобрался :-) (здесь названия на украинском)

valCooL
14.04.2008, 09:13
После применения кода от azukari дата выводится в виде " апреля 2008 г.", без цифры. Как бороться?

margol
14.04.2008, 10:38
Добавить это:
cObject = COA
cObject.10 = TEXT
cObject.10{
field = datetime
strftime = %d
wrap = |&nbsp;
}

valCooL
16.04.2008, 17:25
вой пасиба :)

thebat
17.04.2008, 19:29
[...]
lib.calendar.50 < plugin.tx_newscalendar_pi1
lib.calendar.50 {
show.allRecords = 1
calendar.startWeekDay = 1
render{
displayType=1
# monthLinkDisplay = 1
dayNameLength = 1
singleView = 7
backPage = 21
contextMenuLink = LEFT
listPage = 22
startingPoint = 14,11
}
}
[/PHP]
работает как показано на картинке. Как сделать, чтобы и April, то есть названия месяцев были русскими в самом календаре?

Там это дело управоляется вот этим

language = ru
locale_all = ??

... вот как у меня ...

plugin.tx_newscalendar_pi1 {
calendar.startWeekDay = 1
special.parserFunction = htmlspecialchars
}
language = ua
locale_all = uk_UA.UTF-8

margol
30.04.2008, 13:03
Спасибо за ответ, но это не помогло. В config у меня и так было прописано
language = ru
locale_all = ru_RU.UTF-8
То же повставляля в разные места в описание календаря - не помогло. Может что-то еще прописать?

Podlec
13.09.2008, 12:23
Столкнулся с этой проблемой. Когда прописаная локаль не работает. То есть в списке локалей на сервере она присутствует а когда прописываешь ее в TS то ничего не происходит. Здесь трабл в настройках апача самомго хостинга - следовательно необходимо пользоваться сниппетами.

Собственно вопрос к сообществу. Не могли бы привести пример сниппета для newscalendar ? :)

semender
17.09.2010, 16:08
Здравствуйте,использовал вот этот скрипт

# Фиксим локаль для новостей
[globalVar = GP:L = 1]
[else]
plugin.tt_news {
displayLatest {
date_stdWrap >
date_stdWrap {
strftime >
cObject = COA
cObject.10 = TEXT
cObject.10{
field = datetime
strftime = %e
}
cObject.20 = CASE
cObject.20{
key.field = datetime
key.strftime = %m
01 = TEXT
01.value = января
02 = TEXT
02.value = февраля
03 = TEXT
03.value = марта
04 = TEXT
04.value = апреля
05 = TEXT
05.value = мая
06 = TEXT
06.value = июня
07 = TEXT
07.value = июля
08 = TEXT
08.value = августа
09 = TEXT
09.value = сентября
10 = TEXT
10.value = октября
11 = TEXT
11.value = ноября
12 = TEXT
12.value = декабря
stdWrap.wrap = &nbsp;|&nbsp;
}
cObject.30 = TEXT
cObject.30{
field = datetime
strftime = %Y
wrap = |&nbsp;г.
}
}
}
displaySingle.date_stdWrap >
displaySingle.date_stdWrap < .displayLatest.date_stdWrap
displayList.date_stdWrap >
displayList.date_stdWrap < .displayLatest.date_stdWrap
}
[global]

Но почему-то у меня не выводится так число, только когда в 12 строке меняю строку strftime = %e на strftime = %d ,(вывод в формате двух чисел) оно выводится. Не показывается также и в tt_board число, в чём проблема???Не пойму ни как,мож кто сталкивался...

semender
19.09.2010, 11:39
Проблема была в strftime,спасибо MaRTial