Генератор favicon
Артем Мáлков
393 просм
4 комм
Поделиться

Время прочтения статьи на PHP

В продолжение темы подсчета времени прочтения статьи хотел бы представить вам вариант реализации этого функционала на PHP. В отличие от похожего модуля на jQuery, он выполняется на стороне сервера, а потому более стабилен. И если ваш хостинг имеет поддержку PHP – смело ставьте именно этот вариант.

Время прочтения статьи на PHP

Преимущества модуля:

1. Легкое использование.
2. Возможность задать скорость чтения слов в минуту.
3. Возможность включить изображения в общее время чтения.
4. Склонение «минут» в зависимости от числа.
5. Более стабильная работа модуля.

Установка модуля

Приведенный ниже код используйте в нужном месте вашего сайта, где $content – это переменная, содержащая в себе ваш контент.

$content = "Ваш контент";
$words_per_minute = "250"; // Время чтения слов в минуту
$img_per_minute = "12"; // Время чтения изображения в секундах
$img_numb = preg_match_all('~<img~i', $content, $result_numb); // Плучаем общее количество изображений в тексте
$text_read = round(count(preg_split('/\s/', $content)) /  $words_per_minute, 1); // Получаем общее время чтения текста
$img_read = floor((count($result_numb[0]) * $img_per_minute) / 60); // Получаем общее время чтения изображений
$all_read = $img_read + $text_read; // Получаем общее время чтения (текст + изображения)
function decl_of_numb($all_numb, $titles) {
$cases = array(2, 0, 1, 1, 1, 2);
return $all_numb." ".$titles[ ($all_numb%100>4 && $all_numb%100<20)? 2 : $cases[min($all_numb%10, 5)] ];
}
echo '<b>Время чтения статьи:</b> '.decl_of_numb(round($all_read), array(' минута', ' минуты', ' минут'));

Если вы хотите исключить время чтения для изображений, то переменную $img_per_minute выставите в 0.

4
комментария
Evgen
8.04 в 22:47
Здравствуйте. Подскажите что куда вставлять в dle?
  • 0
Evgen, у вас разрешены php вставки из этой статьи - https://artem-malcov.ru/haki/ispolzovanie-php-vstavok-v-shablonah-dle ?
  • 0
Evgen
9.04 в 15:34
А как насчет безопастности? Можно ли это реализовать как доп модулем? И вставить вот так {include file="/engine/modules/Readingtime.php"}
  • 0
Evgen, для этого, вам нужно текст передать через параметр {include file="/engine/modules/Readingtime.php?content=Ваш текст"}.

А в самом скрипте вы удаляете $content = "Ваш контент"; и чисто теоретически - должно работать. Попробуйте, и о результате тут отпишитесь. "Ваш контент" вы заменяете либо доп полем, где у вас будет текст, либо {full-story}
  • 0
Оставить комментарий:
Нажимая кнопку «Отправить» вы даете согласие на обработку своих персональных данных.
Ваше Имя
Ваш E-mail
Текст комментария