Интересное решение на неявном преобразовании типов
Задача, собственно, проста: ненавязчиво напоминать пользователю когда он последний раз читал топик надписью в заголовке о количестве дней, прошедших с момента последнего его прочтения. Делается так:
Комментировать дальше не буду, но на вопросы отвечу).
{$numberOfDays = ($smarty.now|date_format:"%Y%m%d"-0)-($oTopic->getDateRead()|replace:"-":""-0)}
{if ($numberOfDays != 0) }
<div style="font-size: 10px; display: inline; color: #d3d3d3;">
(Прочитано {$numberOfDays} дней назад)
</div>
{/if}
Комментировать дальше не буду, но на вопросы отвечу).
15 комментариев
Код добавляется в topic_part_header.tpl в элемент
после ссылки с заголовком.
{if $oTopic->getType() == 'link'}
{/if}
{$numberOfDays = ($smarty.now|date_format:"%Y%m%d"-0)-($oTopic->getDateRead()|replace:"-":""-0)}
{if ($numberOfDays != 0) }
(Прочитано {$numberOfDays} дн. назад)
{/if}
Смешно выглядит (Прочитано 3 дней назад) < — :) а хотелось бы автоматом определение. 3 дня назад
Заглюнул мельком в базу, увидел там таблицу table_read в которой сохраняются все просмотры. Мне вот интересно это не тормозит? Допустим у меня сайт с 100-120 постоянно залогиненных юзеров которые в день заходят минимум в 20 новых «топиков». Т.е получается в среднем 100*20 записей в день или 2000 строк*31. Итого почти 50.000 строчек в таблице за один месяц.
В скриптах лазить не стал, мне интересно эта таблица чистеца или как оно вообще оптимизировано. Судя по всему только кешами.
Можно добавить days_back по аналогии с hours_back и вставлять кратко и лаконично в шаблон без лишних манипуляций.