Технический сбой

Сайт временно работает в режиме только для чтения, идут восстановительные работы. Приносим свои извинения за неудобства.
DLE FAQ » Все вопросы » Общие вопросы по PHP » Как изменить формат вывода даты для статической страницы?

Как изменить формат вывода даты для статической страницы?


     Общие вопросы по PHP, MySQL    1858

вопрос
Всем привет!
Коллеги очень прошу вашей помощи в решении одной задачи.
DLE 11.2
Есть статическая страница на которой выводятся последние добавленные новости.
На данной странице, помимо последних добавленных новостей, нужно выводить дату их публикации и количество.

Дата выводится так:
$newscontent['date'] = strtotime($newscontent['date']);
if( date( 'Ymd', $newscontent['date'] ) == date( 'Ymd', $_TIME ) )
$tpl12->set( '{date}', $lang['time_heute'] . langdate( ", H:i", $newscontent['date'] ) );
elseif( date( 'Ymd', $newscontent['date'] ) == date( 'Ymd', ($_TIME - 86400) ) )
$tpl12->set( '{date}', $lang['time_gestern'] . langdate( ", H:i", $newscontent['date'] ) );
else
$tpl12->set( '{date}', langdate( $config['timestamp_active'], $newscontent['date'] ) );

На статической странице дата выводится как год, месяц, день.
Можно ли ее "развернуть", чтобы сначала шел день, месяц и год? Я пробовал использовать DATE_FORMAT, у меня не получилось.

Как еще можно вывести количество последних добавленных новостей на статической странице?

Ответа пока нет


4 комментария

LazyDev
PHP-developer

LazyDev - -

Ниже
$tpl12->set( '{date}', langdate( $config['timestamp_active'], $newscontent['date'] ) );
Вставить
$news_date = $row['date'];
$tpl12->copy_template = preg_replace_callback ( "#\{date=(.+?)\}#i", "formdate", $tpl12->copy_template );
И выводите дату как хотите
{date=d m Y}

Мой блог: LazyDev.pro

Помогаю с решением проблем на платной основе.

gorod
Юзер

gorod - -

Gameer, Спасибо!

Получилось, но не работает так, как нужно.
Сейчас везде, в каждом блоке, выводится фраза с одной и той же датой "Обновления на 13.12.2016 ". Что не соответствует действительности, так как обновления происходили каждый день.

Код был такой:

foreach ($lastnews as $date => $news){		
		$tpl1->set("{date}", $date);
 
$newscontent['date'] = strtotime($newscontent['date']);			
			if( date( 'Ymd', $newscontent['date'] ) == date( 'Ymd', $_TIME ) ) 	{	
				$tpl1->set( '{date}', $lang['time_heute'] . langdate( ", H:i", $newscontent['date'] ) ); }			
			elseif( date( 'Ymd', $newscontent['date'] ) == date( 'Ymd', ($_TIME - 86400) ) ) {
				$tpl1->set( '{date}', $lang['time_gestern'] . langdate( ", H:i", $newscontent['date'] ) ); }
			else {			
				$tpl1->set( '{date}', langdate( $config['timestamp_active'], $newscontent['date'] ) ); }
			
			$news_date = $row['date'];
			$tpl1->copy_template = preg_replace_callback ( "#\{date=(.+?)\}#i", "formdate", $tpl1->copy_template );
}


Если здесь это:

foreach ($lastnews as $date => $news){		
		$tpl1->set("{date}", $date); 


Заменить на это:

foreach ($lastnews as $date => $news){		
		$tpl1->set("{date=d.m.Y}", $date); 


А в файле шаблона написать:
{date}


Тогда в каждом блоке появляется правильная дата, но в таком формате: "Обновления на 25-01-2017, 19:10".
А нужно, чтобы было в таком: d.m.Y.

Как это можно исправить?

При этом, почему то последние добавленные новости за 2016 год выводятся так как и нужно: в хронологическом порядке: от последней даты добавления к первой дате добавления, а новости за 2017 год - уже в разнобой с нарушением хронологии. То есть сейчас выводится последняя добавленная новость за 25.01.2017, за ней идет за 28.01.2017, далее - за 21.01.2017.

Как это тоже можно исправить?

LazyDev
PHP-developer

LazyDev - -

gorod,
$news_date = $row['date'];
замените на
$news_date = $newscontent['date'];
и тег заработает.

Мой блог: LazyDev.pro

Помогаю с решением проблем на платной основе.

gorod
Юзер

gorod - -

Gameer, спасибо,
исправил, но особенно не помогло.

Если в файле шаблона написать:
{date}


Тогда выведется так: "Обновления на 25-01-2017, 19:10".
А нужно, чтобы было так: d.m.Y.

Если в файле шаблона написать:
{date=d.m.Y}


Тогда везде выведется одна и та же дата: "Обновления на 13.12.2016".

Что еще можно сделать?

Похожие вопросы

наверх