Подсчет примерного время чтения блога ICMS 2

#1 13 августа 2016 в 08:36
На вордпрессе есть удобная функция, которая делает примерный подсет времени чтения блога. Как сообщают некоторые источники, это увеличиват на 30% времяприбывания пользователя.

Саму функцию нашел, но никак не придумаю как ее вставить под заголовок записи типа контента.

  1. function bm_estimated_reading_time() {
  2.  
  3. $post = get_post();
  4.  
  5. $words = str_word_count( strip_tags( $post->post_content ) );
  6. $minutes = floor( $words / 120 );
  7. $seconds = floor( $words % 120 / ( 120 / 60 ) );
  8.  
  9. if ( 1 < = $minutes ) {
  10. $estimated_time = $minutes . ' minute' . ($minutes == 1 ? '' : 's') . ', ' . $seconds . ' second' . ($seconds == 1 ? '' : 's');
  11. } else {
  12. $estimated_time = $seconds . ' second' . ($seconds == 1 ? '' : 's');
  13. }
  14.  
  15. return $estimated_time;
  16.  
  17. }
#2 13 августа 2016 в 09:53
а можно глянуть на весь код
#4 14 августа 2016 в 08:26

Jestik,
Эта штука просто подсчитывает количество слов в тексте и исходя из этого делает выводы о времени нужном на его прочтение.
wp-templ.ru/manual/679-estimated-reading-time.html
wordsmall.ru/bez-plagina/dobavlyaem-statya-wordpress-podschet-slov-i-primernoe-vremya-na-ix-prochtenie.html

Ris
верно. осталось понятьк ак вставитьт это в движок
#5 14 августа 2016 в 10:04
Это ж надо как то дать понять, какое поле надо считать…
#6 14 августа 2016 в 10:42

Это ж надо как то дать понять, какое поле надо считать...

Jestik
Предпринял попытку тупо посчитать слова в
  1. $text = $field['handler']->setItem($item)->parseTeaser($item[$field['name']]);
Оно считает, что там 10 слов. Если теги обрезать strip_tags — количество слов резко уменьшается до двух.
#7 18 августа 2016 в 00:50
..\templates\default\content\default_item.tpl.php
В начало вставляйте
  1. <?php
  2. function bm_estimated_reading_time($content='') {
  3.  
  4. $min = 'минуту|минуты|минут';
  5. $sec = 'секунду|сенунды|секунд';
  6.  
  7. $words = count( explode(' ', strip_tags($content)) );
  8. $minutes = floor( $words / 120 );
  9. $seconds = floor( $words % 120 / ( 120 / 60 ) );
  10.  
  11. return $minutes < 1 ? html_spellcount($seconds, $sec) : html_spellcount($minutes, $min) . ( $seconds == 0 ? '' : ', ' . html_spellcount($seconds, $sec));
  12.  
  13. }
  14. ?>
Затем в желаемое место добавляете вызов:
  1. <?php if (!empty($item['content'])) { ?>
  2. <span>Читать: <?php echo bm_estimated_reading_time($item['content']); ?></span>
  3. <?php } ?>
  1. <?php $user = cmsUser::getInstance(); ?>
  2.  
  3. <?php if ($fields['title']['is_in_item']){ ?>
  4. <h1>
  5. <?php if ($item['parent_id']){ ?>
  6. <div class="parent_title">
  7. <a href="<?php echo href_to($item['parent_url']); ?>"><?php html($item['parent_title']); ?></a> &rarr;
  8. </div>
  9. <?php } ?>
  10. <?php html($item['title']); ?>
  11. <?php if ($item['is_private']) { ?>
  12. <span class="is_private" title="<?php html(LANG_PRIVACY_PRIVATE); ?>"></span>
  13. <?php } ?>
  14. </h1>
  15. <?php unset($fields['title']); ?>
  16.  
  17. <?php if (!empty($item['content'])) { ?>
  18. <span>Читать: <?php echo bm_estimated_reading_time($item['content']); ?></span>
  19. <?php } ?>
  20.  
  21. <?php } ?>
Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.