<?php class ArticlePage extends Page { public function url($options = null): string { $date = $this->date()->toDate('Y/m/d'); return '/' . $date .'/' . $this->slug(); } public function readingTime() { $doc = new DOMDocument(); $doc->loadHtml( "<html><head><meta charset=\"UTF-8\"><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"></head><body>" . $this->text()->kirbytext() ."</body></html>" ); $pElems = $doc->getElementsByTagName('p'); $text = ''; foreach ($pElems as $pElem) { $text .= $pElem->nodeValue . ' '; } $wordCount = count(explode(' ', $text)); $readingTime = (int)ceil($wordCount / 150); return $wordCount . ' words, ~' . $readingTime . 'min reading time'; } }