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

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

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

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

config.cache_clearAtMidnight 1

lib
.calendar COA

lib
.calendar.10=TEXT
lib
.calendar.10{
datadate: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{
    
datadate: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

PHP код:

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

Цитата:

Сообщение от margol (Сообщение 18340)
[...]
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 у меня и так было прописано
PHP код:

    language ru
    locale_all 
ru_RU.UTF-

То же повставляля в разные места в описание календаря - не помогло. Может что-то еще прописать?

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


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

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