Формат даты в статьях и модуле последних статей

ЕСТЬ РЕШЕНИЕ ЗАКРЫТО
#1 16 апреля 2014 в 14:00
Здравствуйте!
1.10.3
Есть необходимость вывести отдельно дату, месяц и год публикации. Пробую воспользоваться date_format, но получаю название месяца на английском.
т.е. (пусть будет пока всё вместе):
  1. {$article.pubdate|date_format:"%d %b %Y"}
выведет 16 apr 2014 а нужно 16 апр 2014
Подскажите как его вывести на русском. Или может как-то по другому разбить на части дату.
Спасибо!
#2 16 апреля 2014 в 14:21
Олег Васильевич я, на русском языке вы эту информацию не получите. Выход: применить стандартную функцию смарти replace:'что ищем':'на что меняем'. Например:
  1. {$article.pubdate|date_format:"%d %b %Y"|replace:'january': 'январь'|replace:'february': 'февраль'...и так далее}
.
Если хотите сделать локализацию, например, для украинского, пишите:
  1. replace:'january': $LANG.JANUARY
а в файле локализации
  1. $_LANG['JANUARY'] = 'Січень';
.
Думаю, разберетесь. Подробно тут
#3 16 апреля 2014 в 14:42
Для этого существуют модификаторы. В простейшем случае будет так:
  1. /*
  2.   модификатор |my_date_format вернет дату, месяц и год разложенные по спанам
  3. */
  4.  
  5. function smarty_modifier_my_date_format($string) {
  6. $data = explode(" ", trim($string));
  7. $day = trim($data[0]);
  8. $month = trim($data[1]);
  9. $year = trim($data[2]);
  10.  
  11. if(mb_strtolower($day) == 'сегодня') {
  12. return "<span class='day'>Сегодня</span><span class='month'>в ".$year."</span>";
  13. } elseif(mb_strtolower($day) == 'вчера') {
  14. return "<span class='day'>Вчера</span><span class='month'>в ".$year."</span>";
  15. } else {
  16. $day = sprintf("%2d", $day);
  17. return "<span class='day'>".$day."</span><span class='month'>".$month."</span><span class='year'>".$year."</span>";
  18. }
  19. }
#4 16 апреля 2014 в 18:05
Странник, спасибо, в модуле работает (в самой статье — нет).
Только записать пришлось так:
  1. {$article.pubdate|date_format:"%d %b %Y"|replace:'january':'январь'|replace:'february':'фев'...}
Pasha, куда функцию вставить?
Спасибо!
#5 16 апреля 2014 в 18:16
Олег Васильевич я, в статье тоже есть {$article.pubdate}. Это файл templates/ваш шаблон/components/com_content_view.tpl
Или чего недогоняю?
#6 16 апреля 2014 в 19:32


Олег Васильевич я, в статье тоже есть {$article.pubdate}. Это файл templates/ваш шаблон/components/com_content_view.tpl

Странник
Там и вставлял — выводитcя текущая дата вместо даты публикации статьи
#7 16 апреля 2014 в 19:53
А! Так эта дата не шаблоне формируется — во фронтэнде. Файл components/content/frontend.php. Там копайте.А фронтэнд ее из базы получает. Таблица cms_content, поле pubdate.
В вашем случае проще не мудрить, а перед выводом в шаблон ее внаглую получить:
  1. $article['pubdate'] = $inDB->get_field('cms_content', "id = $article['id']", 'pubdate');
Ну, а в шаблоне по описанному выше сценарию.
#8 17 апреля 2014 в 02:44
  1.  
  2. <?php
  3.  
  4. /*
  5.  
  6.   Модификатор |my_date_format
  7.   Принимает форматированную дату и возвращает ее в виде числа, месяца и года разложенных по спанам
  8.   Все содержимое сохранить как "modifier.my_date_format.php" и положить в папку /includes/smarty/libs/plugins
  9.   В шаблонах использовать - {$переменная_с_датой|my_date_format}
  10.  
  11.   =======================================================================
  12.  
  13.   В com_content_view.tpl это будет {$article.fpubdate|my_date_format}
  14.   В com_content_read.tpl {$article.pubdate|my_date_format}
  15.  
  16. */
  17.  
  18. function smarty_modifier_my_date_format($string) {
  19.  
  20. $data = explode(" ", trim($string));
  21. $day = trim($data[0]);
  22. $month = trim($data[1]);
  23. $year = trim($data[2]);
  24.  
  25. if(mb_strtolower($day) == 'сегодня') {
  26.  
  27. return "<span class='day'>Сегодня</span><span class='month'>в ".$year."</span>";
  28.  
  29. } elseif(mb_strtolower($day) == 'вчера') {
  30.  
  31. return "<span class='day'>Вчера</span><span class='month'>в ".$year."</span>";
  32.  
  33. } else {
  34.  
  35. $day = sprintf("%2d", $day);
  36. return "<span class='day'>".$day."</span><span class='month'>".$month."</span><span class='year'>".$year."</span>";
  37.  
  38. }
  39.  
  40. }
  41.  
  42. ?>
  43.  
#9 17 апреля 2014 в 11:15
Пригодились оба варианта.
Странник, Pasha, огромное спасибо!
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.