Плагин "Время прочтения"

Возникла нужда реализовать подсчёт и вывод времени прочтения топика и то, что получилось я решил оформить плагином.
В настройках плагина указывается скорость прочтения (симв./сек.), а также, если нужно, количество символов после которых округлять время до минуты.
Также, для вывода написал плагин для Smarty который можно настроить для вывода в минутах и секундах или только в минутах или секунд (есть и другие настройки). Но главное, что плагин автоматически склоняет слова «минута» и «секунда» для разных чисел.
Пример вывода:
{amount_minutes_seconds seconds=$oTopic->getTimeOfReading()}


UPD: Обновил плагин. Исправил то о чём подсказал PSNet . Добавил кнопку «Пересчитать время всех топиков» в админку. И теперь при активации не пересчитываются все топики, эту функцию можно включить в конфиге.

Ссылка на плагин в каталоге: catalog.livestreetcms.com/addon/view/503/
GitHub: github.com/sgavka/lsplugin-time-of-reading

13 комментариев

avatar
А можно поинтересоваться? Зачем нужно выводить время прочтения? Кажется какой то бессмысленной функцией.
avatar
Клиент захотел)
avatar
А если подумать, то для информирования пользователя про объем статьи. А если поставить высокую скорость, то может послужить инструментом для привлечения пользователя к прочтению. Мол, смотри это займет всего 5 минут!
avatar
Все равно не понимаю странное желание заказчика. Спасибо за плагин вам! Я например вообще бы внимания на эти данные не обращал, а объем статьи по скроллу определяю (комментов обычно не 100500). Мое внимание падает только на заголовок, если он интересный, то читаю не зависимо от объема текста, думается таких большинство.
avatar
Скажу и именно за наш прект: эта фича не плохо там вписалась.
avatar
Ого, ещё и в базу пишет! Подскажите, зачем в базу записывать?
Просто было решение хуком от AlikMis:
livestreet.ru/blog/questions/17486.html
avatar
Не хочется считать каждый раз при просмотре.
avatar
Кстати, аглоритм подсчета livestreet.ru/blog/questions/17486.html#comment277478 значительно быстрее и проще
avatar
  1. В хуке в CalculateTime не нужно возвращать параметры
  2. в наследуемом модуле топика не нужно вручную делать коннект к бд, просто $this->oMapperTimeOfReading = Engine::GetMapper(__CLASS__);, более того — в модуле уже есть $this->oMapperTopic, поэтому весь Init() можете выкинуть и использовать существующую связь с маппером.
  3. В сущностях сеттеры и геттеры можно не писать, они формируются автоматически в камелькейсе


плагин для смарти:

  1. &$oSmarty??? это ещё с пхп 4 катается. в 5 уже давно объекты — по ссылкам.
  2. не нужно подключать движок снова, запустить рендеринг смарти может только он
  3. не нужно подключать плагины смарти напрямую, вместо этого у объекта смарти есть loadPlugin
  4. если меняете язык — то после всех операций нужно вернуть оригинал


пересчет всех топиков при активации — спорный вопрос, на новых сайтах — ок, но владельцы больших… или отключите лимит времени либо не делайте пересчет всех сразу
avatar
не нужно подключать плагины смарти напрямую, вместо этого у объекта смарти есть loadPlugin
можно про это по подробнее? там тогда надо плагины в другую папку кидать, это куда?
avatar
Использовать
$this->oMapperTopic
почему-то не получается, и кажется именно при активации плагина.
avatar
В ините() исходного модуля топиков получается маппер, вы удалили Инит() в своем модуле или вызываете родительский метод?
avatar
Спасибо за конструктивные замечания. Постарался их исправить.
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.