Не нравятся результаты поиска? Попробуйте другой поиск!
DLE FAQ » Все вопросы » Общие вопросы по PHP » Как подключить время прочтения статьи на PHP?

Как подключить время прочтения статьи на PHP?


     27.07.2022    время прочтения статьи    Общие вопросы по PHP, Модули, Хаки    587

вопрос
Всем привет пытаюсь запустить плагин - время прочтения статьи. Собственно создаю плагин readingtime.php:

$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(" минута", " минуты", " минут"));


В полной новости в нужном месте выставляю: {include file="/engine/modules/readingtime.php?content={short-story}"}

По факту выводится вся статья в этом месте... Есть у кого то идеи как запустить данное чудо???

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


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

raimikmb
Юзер

raimikmb - 27 июля 2022 20:49 -

нашел вариант по проще но не пойму как внедрить в DLE ((((

function reading_time() {
  $content = get_post_field( 'post_content', $post->ID );
  $word_count = str_word_count( strip_tags( $content ) );
  $readingtime = ceil($word_count / 200);
  $totalreadingtime = $readingtime . ' мин.';
  return $totalreadingtime;
}


<?php echo reading_time(); ?>

Dark5ider
Эксперт

Dark5ider - 28 июля 2022 01:03 -

Код, представленный в вопросе (по моему субъективному мнению, который можно сократить в половину с тем же функционалом) рабочий, проверил.
Хотя бы поправьте регулярку на разбивку по словам:

$text_read = round(count(preg_split("/[\s,]+/", $content)) /  $words_per_minute, 1); 


Второй код для DLE будет выглядеть как то так:

engine/modules/rtime.php

  $word_count = str_word_count( strip_tags( $content ) );
  $readingtime = ceil($word_count / 200);
  echo $readingtime . ' мин.';


Вызываем:

 <b>Время чтения статьи:</b> {include file="/engine/modules/rtime.php?content={short-story}"}

raimikmb
Юзер

raimikmb - 28 июля 2022 09:41 -

Создал плагин далее в фуллстори вызиваю строкой <b>Время чтения статьи:</b> {include file="/engine/modules/rtime.php?content={short-story}"} в итоге в этом месте выводится содержимое шорт стори... что не так я делаю?

Dark5ider
Эксперт

Dark5ider - 29 июля 2022 02:34 -

Все так. Какая версия ДЛЕ и может какие изменения вносили в движок?

raimikmb
Юзер

raimikmb - 1 августа 2022 17:34 -

DLE 15.2 нет правки минимальные и то только в main.tpl ...

rewenas
Юзер

rewenas - 28 июля 2022 09:57 -

Попробуй это. Очень легкий и простой скрипт на jQuery. С поставленной задачей справляется на ура.
Время прочтения статьи на jQuery

raimikmb
Юзер

raimikmb - 1 августа 2022 17:35 -

Видел данный вариант ... не очень хотелось бы лишний JS внедрять...

Чтобы комментировать - войдите или зарегистрируйтесь на сайте

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

наверх