Smarty date_format по русски
Потребовалось, чтобы Smatry функция date_format выводит дату в формате с русским месяцем.
Нашла я это плагин и дописала. Он находится smarty/plugins/modifier.date_format.php
Взяла и поправила его чисто под нужны (внесение выеделено жирным).
function smarty_modifier_date_format($string, $format = SMARTY_RESOURCE_DATE_FORMAT, $default_date = '',$formatter='auto')
{
/**
* Include the {@link shared.make_timestamp.php} plugin
*/
require_once(SMARTY_PLUGINS_DIR . 'shared.make_timestamp.php');
if ($string != '') {
$timestamp = smarty_make_timestamp($string);
} elseif ($default_date != '') {
$timestamp = smarty_make_timestamp($default_date);
} else {
return;
}
if($formatter=='rus')
{
$months = array (
1 => 'января',
2 => 'февраля',
3 => 'марта',
4 => 'апреля',
5 => 'мая',
6 => 'июня',
7 => 'июля',
8 => 'августа',
9 => 'сентября',
10 => 'октября',
11 => 'ноября',
12 => 'декабря');
$format = str_replace("%m",$months[(int)date('m',$timestamp)],$format);
$formatter='auto';
}
if($formatter=='strftime'||($formatter=='auto'&&strpos($format,'%')!==false)) {
if (DS == '\\') {
$_win_from = array('%D', '%h', '%n', '%r', '%R', '%t', '%T');
$_win_to = array('%m/%d/%y', '%b', "\n", '%I:%M:%S %p', '%H:%M', "\t", '%H:%M:%S');
if (strpos($format, '%e') !== false) {
$_win_from[] = '%e';
$_win_to[] = sprintf('%\' 2d', date('j', $timestamp));
}
if (strpos($format, '%l') !== false) {
$_win_from[] = '%l';
$_win_to[] = sprintf('%\' 2d', date('h', $timestamp));
}
$format = str_replace($_win_from, $_win_to, $format);
}
return strftime($format, $timestamp);
} else {
return date($format, $timestamp);
}
}
И в шаблоне вызывать примерно так
{$doc.doc_date|date_format:"%d %m %Y":"":"rus"}
Нашла я это плагин и дописала. Он находится smarty/plugins/modifier.date_format.php
Взяла и поправила его чисто под нужны (внесение выеделено жирным).
function smarty_modifier_date_format($string, $format = SMARTY_RESOURCE_DATE_FORMAT, $default_date = '',$formatter='auto')
{
/**
* Include the {@link shared.make_timestamp.php} plugin
*/
require_once(SMARTY_PLUGINS_DIR . 'shared.make_timestamp.php');
if ($string != '') {
$timestamp = smarty_make_timestamp($string);
} elseif ($default_date != '') {
$timestamp = smarty_make_timestamp($default_date);
} else {
return;
}
if($formatter=='rus')
{
$months = array (
1 => 'января',
2 => 'февраля',
3 => 'марта',
4 => 'апреля',
5 => 'мая',
6 => 'июня',
7 => 'июля',
8 => 'августа',
9 => 'сентября',
10 => 'октября',
11 => 'ноября',
12 => 'декабря');
$format = str_replace("%m",$months[(int)date('m',$timestamp)],$format);
$formatter='auto';
}
if($formatter=='strftime'||($formatter=='auto'&&strpos($format,'%')!==false)) {
if (DS == '\\') {
$_win_from = array('%D', '%h', '%n', '%r', '%R', '%t', '%T');
$_win_to = array('%m/%d/%y', '%b', "\n", '%I:%M:%S %p', '%H:%M', "\t", '%H:%M:%S');
if (strpos($format, '%e') !== false) {
$_win_from[] = '%e';
$_win_to[] = sprintf('%\' 2d', date('j', $timestamp));
}
if (strpos($format, '%l') !== false) {
$_win_from[] = '%l';
$_win_to[] = sprintf('%\' 2d', date('h', $timestamp));
}
$format = str_replace($_win_from, $_win_to, $format);
}
return strftime($format, $timestamp);
} else {
return date($format, $timestamp);
}
}
И в шаблоне вызывать примерно так
{$doc.doc_date|date_format:"%d %m %Y":"":"rus"}
Хм... все сделал как вы описали, но у меня не чего не выводится (делал на локалхосте - денвер) движок Prestashop
ОтветитьУдалитьmodifier.date_format.php такой же как у вас выше
Ничего не выводится? И ошибки никакой?
Удалить1 - Проверить отображаются ли вообще ошибки.
Как вариант в .htaccess написать строку
php_flag display_errors on
Скорее у вас ошибка кая-то (синтаксическая, например)
2 - Нужно понять почему не отображает ничего. А если в шаблоне написать
{$doc.doc_date|date_format:"%d %m %Y"}
Будет что-то выводить?
Спасибо. Пригодилось. Все заработало сразу.
ОтветитьУдалитьПередаю unixtime из базы. Получилось очень удобно
Спасибо, очень приятно когда благодарят
УдалитьСпасибо, все работает
ОтветитьУдалитьБольшое спасибо! Все получилось, все работает!
ОтветитьУдалитьСпасибо.
ОтветитьУдалитьДобавлю для нубов типа меня. Файл отредактированный нужно сохранять в UTF-8
А как сделать, что бы выводился день на русском? к примеру четверг.
ОтветитьУдалить