diff --git a/app/Entities/Models/Page.php b/app/Entities/Models/Page.php index 076850e63..c244219ea 100644 --- a/app/Entities/Models/Page.php +++ b/app/Entities/Models/Page.php @@ -127,17 +127,21 @@ class Page extends BookChild return $refreshed; } + /** + * Returns URL to a cover image for the page. + */ public function getCoverImage(): string { - $dom = new \DomDocument(); - $dom->loadHTML($this->html); - $images = $dom->getElementsByTagName('img'); + $default = $this->book->getBookCover(); + + $firstImage = (new PageContent($this))->fetchFirstImage(); try { - $cover = $images->length > 0 ? $images[0]->getAttribute('src') : $this->book->getBookCover(); - } catch (Exception $err) { - $cover = $this->book->getBookCover(); + $cover = $firstImage ? $firstImage : $default; + } catch (\Exception $err) { + $cover = $default; } return $cover; } + } diff --git a/app/Entities/Tools/PageContent.php b/app/Entities/Tools/PageContent.php index f60971b8b..e5ea454e7 100644 --- a/app/Entities/Tools/PageContent.php +++ b/app/Entities/Tools/PageContent.php @@ -358,4 +358,18 @@ class PageContent return $html; } + + /** + * Retrieve first image in page content and return the source URL. + */ + public function fetchFirstImage(): string + { + $htmlContent = $this->page->html; + + $dom = new \DomDocument(); + $dom->loadHTML($htmlContent); + $images = $dom->getElementsByTagName('img'); + + return $images[0]->getAttribute('src'); + } } diff --git a/resources/views/base.blade.php b/resources/views/base.blade.php index e85029573..b7dc83d98 100644 --- a/resources/views/base.blade.php +++ b/resources/views/base.blade.php @@ -12,7 +12,6 @@ <meta charset="utf-8"> <!-- Social Cards Meta --> - <meta property="og:title" content="{{ isset($pageTitle) ? $pageTitle . ' | ' : '' }}{{ setting('app-name') }}"> <meta property="og:url" content="{{ url()->current() }}"> @stack('social-meta') diff --git a/resources/views/books/show.blade.php b/resources/views/books/show.blade.php index 72fa9f777..4782da3b9 100644 --- a/resources/views/books/show.blade.php +++ b/resources/views/books/show.blade.php @@ -7,7 +7,7 @@ @stop @push('social-meta') - <meta property="og:description" content="{{ Str::words($book->description, 50, '...') }}"> + <meta property="og:description" content="{{ Str::limit($book->description, 100, '...') }}"> <meta property="og:image" content="{{ $book->getBookCover() }}"> @endpush diff --git a/resources/views/chapters/show.blade.php b/resources/views/chapters/show.blade.php index 47fd42fe2..32d7943ed 100644 --- a/resources/views/chapters/show.blade.php +++ b/resources/views/chapters/show.blade.php @@ -7,7 +7,7 @@ @stop @push('social-meta') - <meta property="og:description" content="{{ Str::words($chapter->description, 50, '...') }}"> + <meta property="og:description" content="{{ Str::limit($chapter->description, 100) }}"> <meta property="og:image" content="{{ $chapter->book->getBookCover() }}"> @endpush diff --git a/resources/views/pages/show.blade.php b/resources/views/pages/show.blade.php index ca639f54b..0810feeb1 100644 --- a/resources/views/pages/show.blade.php +++ b/resources/views/pages/show.blade.php @@ -1,8 +1,11 @@ @extends('tri-layout') @push('social-meta') - <meta property="og:description" content="{{ Str::words($page->html, 50, '...') }}"> + <meta property="og:description" content="{{ Str::limit($page->text, 100, '...') }}"> <meta property="og:image" content="{{ $page->getCoverImage() }}"> + + + $pageContent->getNavigation($page->html); @endpush @section('body') diff --git a/resources/views/shelves/show.blade.php b/resources/views/shelves/show.blade.php index 9615466d8..01e9e6629 100644 --- a/resources/views/shelves/show.blade.php +++ b/resources/views/shelves/show.blade.php @@ -1,7 +1,7 @@ @extends('tri-layout') @push('social-meta') - <meta property="og:description" content="{{ Str::words($shelf->description, 50, '...') }}"> + <meta property="og:description" content="{{ Str::limit($shelf->description, 100) }}"> <meta property="og:image" content="{{ $shelf->getBookCover() }}"> @endpush