Skip to content

Commit 53ff277

Browse files
authored
fix: [LAR-172] article and discussion single page preview for seo (#295)
1 parent 0b8de84 commit 53ff277

File tree

10 files changed

+183
-30
lines changed

10 files changed

+183
-30
lines changed

app/Livewire/Pages/Articles/SinglePost.php

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,12 +14,12 @@ final class SinglePost extends Component
1414
{
1515
public Article $article;
1616

17-
public function mount(Article $article): void
17+
public function mount(): void
1818
{
1919
/** @var User $user */
2020
$user = Auth::user();
2121

22-
$article = $article->load(['media', 'user'])->loadCount('views');
22+
$article = $this->article->load(['media', 'user'])->loadCount('views');
2323

2424
abort_unless(
2525
$article->isPublished() || ($user && $article->isAuthoredBy($user)) || ($user && $user->hasAnyRole(['admin', 'moderator'])), // @phpstan-ignore-line
@@ -42,7 +42,6 @@ public function mount(Article $article): void
4242
->twitterTitle($article->title)
4343
->twitterDescription($article->excerpt(150))
4444
->twitterImage($image)
45-
->twitterSite('laravelcm')
4645
->url($article->canonicalUrl());
4746

4847
$this->article = $article;

app/Livewire/Pages/Discussions/SingleDiscussion.php

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -23,22 +23,20 @@ final class SingleDiscussion extends Component implements HasActions, HasForms
2323

2424
public Discussion $discussion;
2525

26-
public function mount(Discussion $discussion): void
26+
public function mount(): void
2727
{
28-
views($discussion)->cooldown(now()->addHours(2))->record();
28+
views($this->discussion)->cooldown(now()->addHours(2))->record();
2929

3030
// @phpstan-ignore-next-line
3131
seo()
32-
->title($discussion->title)
33-
->description($discussion->excerpt(100))
32+
->title($this->discussion->title)
33+
->description($this->discussion->excerpt(100))
3434
->image(asset('images/socialcard.png'))
35-
->twitterTitle($discussion->title)
36-
->twitterDescription($discussion->excerpt(100))
37-
->twitterImage(asset('images/socialcard.png'))
38-
->twitterSite('laravelcm')
35+
->twitterTitle($this->discussion->title)
36+
->twitterDescription($this->discussion->excerpt(100))
3937
->withUrl();
4038

41-
$this->discussion = $discussion->load('tags', 'replies', 'reactions', 'replies.user');
39+
$this->discussion->load('tags', 'replies', 'reactions', 'replies.user', 'user');
4240
}
4341

4442
public function editAction(): Action

app/Livewire/Pages/Home.php

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -19,14 +19,6 @@ public function render(): View
1919
{
2020
$ttl = now()->addDays(2);
2121

22-
// @phpstan-ignore-next-line
23-
seo()
24-
->description(__('pages/home.description'))
25-
->twitterDescription(__('pages/home.description'))
26-
->image(asset('/images/socialcard.png'))
27-
->twitterSite('laravelcm')
28-
->withUrl();
29-
3022
return view('livewire.pages.home', [
3123
'plans' => Cache::remember(
3224
key: 'plans',

app/Models/User.php

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -117,6 +117,10 @@ final class User extends Authenticatable implements FilamentUser, HasAvatar, Has
117117
'last_active_at' => 'datetime',
118118
];
119119

120+
protected $with = [
121+
'providers',
122+
];
123+
120124
public function hasProvider(string $provider): bool
121125
{
122126
foreach ($this->providers as $p) {

app/Providers/AppServiceProvider.php

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,16 @@ public function boot(): void
4040
$this->bootEloquentMorphs();
4141
$this->bootFilament();
4242

43+
// @phpstan-ignore-next-line
44+
seo()
45+
->title(
46+
default: __('pages/home.title'),
47+
modify: fn (string $title) => $title.' | '.__('global.site_name')
48+
)
49+
->description(default: __('global.site_description'))
50+
->image(default: fn () => asset('images/socialcard.png'))
51+
->twitterSite('@laravelcm');
52+
4353
FilamentColor::register([
4454
'primary' => Color::Emerald,
4555
'danger' => Color::Red,

app/View/Composers/InactiveDiscussionsComposer.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,8 @@ public function compose(View $view): void
1414
{
1515
$discussions = Cache::remember(
1616
key: 'inactive_discussions',
17-
ttl: now()->addDays(3),
18-
callback: fn () => Discussion::noComments()->limit(5)->get()
17+
ttl: now()->addWeek(),
18+
callback: fn () => Discussion::with('user')->noComments()->limit(5)->get()
1919
);
2020

2121
$view->with('discussions', $discussions);

app/View/Composers/TopContributorsComposer.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,9 @@ public function compose(View $view): void
1515
$topContributors = Cache::remember(
1616
key: 'contributors',
1717
ttl: now()->addWeek(),
18-
callback: fn () => User::topContributors()
18+
callback: fn () => User::query()->scopes('topContributors')
1919
->get()
20-
->filter(fn (User $contributor) => $contributor->loadCount('discussions')->discussions_count >= 1)
20+
->filter(fn (User $contributor) => $contributor->discussions_count >= 1)
2121
->take(5)
2222
);
2323

composer.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
"ext-json": "*",
1111
"archtechx/laravel-seo": "^0.10",
1212
"awcodes/filament-badgeable-column": "^2.3",
13+
"barryvdh/laravel-debugbar": "^3.14",
1314
"blade-ui-kit/blade-heroicons": "^2.4",
1415
"codeat3/blade-phosphor-icons": "^2.0",
1516
"cyrildewit/eloquent-viewable": "^7.0",

composer.lock

Lines changed: 153 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

resources/views/layouts/app.blade.php

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,12 +13,9 @@
1313
{{ isset($title) ? $title . ' | ' : '' }} {{ config('app.name') }}
1414
{{ is_active('home') ? '- '. __('pages/home.title') : '' }}
1515
</title>
16-
<meta name="description" content="{{ __('pages/home.description') }}" />
16+
1717
<meta property="og:site_name" content="Laravel.cm" />
18-
<meta property="og:language" content="fr" />
19-
<meta name="twitter:author" content="@laravelcm" />
20-
<link rel="canonical" href="{{ $canonical ?? Request::url() }}" />
21-
@include('partials._og')
18+
<meta property="og:language" content="{{ str_replace('_', '-', app()->getLocale()) }}" />
2219
<x-seo::meta />
2320

2421
<!-- Styles -->

0 commit comments

Comments
 (0)