diff --git a/app/Entities/Models/Page.php b/app/Entities/Models/Page.php index 52c64f048..076850e63 100644 --- a/app/Entities/Models/Page.php +++ b/app/Entities/Models/Page.php @@ -126,4 +126,18 @@ class Page extends BookChild $refreshed->html = (new PageContent($refreshed))->render(); return $refreshed; } + + public function getCoverImage(): string + { + $dom = new \DomDocument(); + $dom->loadHTML($this->html); + $images = $dom->getElementsByTagName('img'); + + try { + $cover = $images->length > 0 ? $images[0]->getAttribute('src') : $this->book->getBookCover(); + } catch (Exception $err) { + $cover = $this->book->getBookCover(); + } + return $cover; + } } diff --git a/resources/views/base.blade.php b/resources/views/base.blade.php index a5404a365..e85029573 100644 --- a/resources/views/base.blade.php +++ b/resources/views/base.blade.php @@ -11,6 +11,13 @@ <meta name="base-url" content="{{ url('/') }}"> <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') + + <!-- Styles and Fonts --> <link rel="stylesheet" href="{{ versioned_asset('dist/styles.css') }}"> <link rel="stylesheet" media="print" href="{{ versioned_asset('dist/print-styles.css') }}"> diff --git a/resources/views/books/show.blade.php b/resources/views/books/show.blade.php index def198bdd..72fa9f777 100644 --- a/resources/views/books/show.blade.php +++ b/resources/views/books/show.blade.php @@ -6,6 +6,11 @@ option:entity-search:entity-type="book" @stop +@push('social-meta') + <meta property="og:description" content="{{ Str::words($book->description, 50, '...') }}"> + <meta property="og:image" content="{{ $book->getBookCover() }}"> +@endpush + @section('body') <div class="mb-s"> diff --git a/resources/views/chapters/show.blade.php b/resources/views/chapters/show.blade.php index db02ebcc4..47fd42fe2 100644 --- a/resources/views/chapters/show.blade.php +++ b/resources/views/chapters/show.blade.php @@ -6,6 +6,11 @@ option:entity-search:entity-type="chapter" @stop +@push('social-meta') + <meta property="og:description" content="{{ Str::words($chapter->description, 50, '...') }}"> + <meta property="og:image" content="{{ $chapter->book->getBookCover() }}"> +@endpush + @section('body') <div class="mb-m print-hidden"> diff --git a/resources/views/pages/show.blade.php b/resources/views/pages/show.blade.php index 48c88434e..ca639f54b 100644 --- a/resources/views/pages/show.blade.php +++ b/resources/views/pages/show.blade.php @@ -1,5 +1,10 @@ @extends('tri-layout') +@push('social-meta') + <meta property="og:description" content="{{ Str::words($page->html, 50, '...') }}"> + <meta property="og:image" content="{{ $page->getCoverImage() }}"> +@endpush + @section('body') <div class="mb-m print-hidden"> diff --git a/resources/views/shelves/show.blade.php b/resources/views/shelves/show.blade.php index 6fee6f45d..9615466d8 100644 --- a/resources/views/shelves/show.blade.php +++ b/resources/views/shelves/show.blade.php @@ -1,5 +1,10 @@ @extends('tri-layout') +@push('social-meta') + <meta property="og:description" content="{{ Str::words($shelf->description, 50, '...') }}"> + <meta property="og:image" content="{{ $shelf->getBookCover() }}"> +@endpush + @section('body') <div class="mb-s">