Сравнить дату сознания поста в блоге с текущей

ЕСТЬ РЕШЕНИЕ ЗАКРЫТО
#16 20 октября 2016 в 17:48


Файл module.php

  1. foreach($posts as $val){$data = $val['pubdate'];
  2. $a=floor((time() - strtotime($data))/60/60/24);
  3. echo $a; //Здесь ваша разница в днях. Дальше делайте с ней, что хотите.
  4. }

Lora

Даты вычитает верно, но в TPL передаётся только последнее значение...
Иллюстрация
Ris, месяца на русском важны.

А можно ли вместо foreach проверить только первое (самую свежую дату)?

#17 20 октября 2016 в 19:10
Ну тогда как то так.
module.php
  1. foreach($posts as $key=> $val){$data = $val['pubdate'];
  2. $a[$key]=floor((time() - strtotime($data))/60/60/24);
  3. }
В шаблоне
  1. {$a[$tid]}
#18 20 октября 2016 в 20:27
mymiit, Lora,
Коллеги, я тут случайно выяснил, что мы занимаемся фигнёй.
Неформатированная дата тоже присутствует в массиве $post. Поэтому достаточно будет написать так:

  1. {if {$post.pubdate}>{($smarty.now-345600)|date_format:"%Y-%m-%d %H:%M:%S"}}
  2. <div class="mod_latest_entry new">
  3. ...
  4. {else}
  5. <div class="mod_latest_entry old">
  6. ...
  7.  
  8. {/if}
#19 20 октября 2016 в 21:53
Ris, все операции по вычислениям по возможности следует проводить на сервере, тем более с php ф-циями, а в шаблон передавать результат.На то он и шаблон.А то, что в массиве присутствуют обе даты было понятно изначально. И предложено ТС-у ещё тремя постами выше. laugh
#20 20 октября 2016 в 22:48

все операции по вычислениям по возможности следует проводить на сервере

Lora

А шаблон где? Неужели с сервера упал?
По моему, чем меньше букаф, тем лучше.
#21 20 октября 2016 в 23:12

А шаблон где? Неужели с сервера упал?

Ris
Неее, с дуба рухнул. rofl
#22 20 октября 2016 в 23:21
Lora,
Так вот, по моему шаблон можно курочить, а модуль пыхапе — системный файл, его лучше не трогать.
У каждого свое православие…
#23 20 октября 2016 в 23:55
Ris, в данном случае религия не причём.Бизнес-логика должна быть отделённой от логики-представления.Для этого и придумали программу, называемую шаблонизатор.В нашем случае Smarty.И нужно уметь разделять эти логики, что бы они не перемешивались.Это основы веб-програмирования. В частности это одна из причин по которой убрали с последней версии смарти тег {php}. Конечно, полностью их не разделить, по большому счёту это зависимые друг от друга понятия, и здесь главное не переборщить.Вот такая Вам религия.
#24 21 октября 2016 в 11:11
mymiit,
Какого пыхапэ?
Это смарти. Шаблонизатор.
Я проверил то, что написал. Это работает.
Приведите код, который Вы написали. Только под спойлер длинные простыни убирайте, пожалуйста.
#25 21 октября 2016 в 11:13


Ну тогда как то так.
module.php

  1. foreach($posts as $key=> $val){$data = $val['pubdate'];
  2. $a[$key]=floor((time() - strtotime($data))/60/60/24);
  3. }
В шаблоне
  1. {$a[$tid]}

Lora

Спасибо, Lora!
#26 21 октября 2016 в 11:16


mymiit,
Какого пыхапэ?
Это смарти. Шаблонизатор.
Я проверил то, что написал. Это работает.
Приведите код, который Вы написали. Только под спойлер длинные простыни убирайте, пожалуйста.

Ris

  1. {if {$post.pubdate}>{($smarty.now-345600)|date_format:"%Y-%m-%d %H:%M:%S"}}
Вот прям это и вставил в шаблон. Очистил КЭШ в админке и открыл главную — не открылась. Ошибка...
#27 21 октября 2016 в 11:17
Всем спасибо! v
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.