Russian TYPO3 community

Russian TYPO3 community (http://forum.typo3.ru/index.php)
-   TypoScript практикум (http://forum.typo3.ru/forumdisplay.php?f=27)
-   -   вывод даты в виде: 12 мартобря 2006 г. (http://forum.typo3.ru/showthread.php?t=1428)

Valery Romanchev 17.05.2006 16:43

вывод даты в виде: 12 мартобря 2006 г.
 
Код:

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

Цитата:

Сообщение от Valery Romanchev (Сообщение 5415)
Код:

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{
не помогла, да и не рационально это.
Может кто подкинет кусочек кода, чтобы все разом, а?


Часовой пояс GMT +4, время: 18:22.

Работает на vBulletin® версия 3.8.1.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot