Skip to content

Commit 411390c

Browse files
committed
Fix SEO Page bugs
+ add better look up for resource class
1 parent d834324 commit 411390c

File tree

9 files changed

+45
-13
lines changed

9 files changed

+45
-13
lines changed

config/filament-flexible-content-block-pages.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,7 @@
102102
'linkable_models' => [
103103
// Models that can be linked in menu items
104104
// These models must implement HasMenuLabel interface
105-
// Resources are automatically discovered via Filament::getModelResource()
105+
// Resources are automatically discovered via FilamentFlexibleContentBlockPages::getModelResource()
106106
\Statikbe\FilamentFlexibleContentBlockPages\Models\Page::class,
107107

108108
// Add your own models here:

resources/views/tailwind/pages/tag_index.blade.php

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
@php
2+
/** @var \Statikbe\FilamentFlexibleContentBlockPages\Models\Tag $tag */
3+
@endphp
4+
15
<x-flexible-pages-base-layout wide="true">
26
<header>
37
<x-flexible-pages-language-switch/>
@@ -7,12 +11,12 @@
711
<div class="container mx-auto px-6 py-8">
812
<div class="mb-8">
913
<h1 class="text-3xl font-bold mb-4">
10-
{{ $tag->getTranslation('name', app()->getLocale()) }}
14+
{{ $tag->name }}
1115
</h1>
1216

1317
@if($tag->seo_description)
1418
<p class="text-lg text-gray-600 mb-6">
15-
{!! $tag->getTranslation('seo_description', app()->getLocale()) !!}
19+
{!! $tag->seo_description !!}
1620
</p>
1721
@endif
1822

src/FilamentFlexibleContentBlockPages.php

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
namespace Statikbe\FilamentFlexibleContentBlockPages;
44

5+
use Filament\Facades\Filament;
6+
use Filament\Panel;
57
use Statikbe\FilamentFlexibleContentBlockPages\Models\Page;
68
use Statikbe\FilamentFlexibleContentBlockPages\Models\Settings;
79

@@ -36,4 +38,31 @@ public function settings(): Settings
3638
{
3739
return $this->config()->getSettingsModel()::getSettings();
3840
}
41+
42+
/**
43+
* Looks up the resource class of a model in ANY panel.
44+
*
45+
* @param string<class-string> $modelClass
46+
* @return string<class-string>|null
47+
*/
48+
public function getModelResource(string $modelClass): ?string
49+
{
50+
// 1. try the current panel:
51+
$resourceClass = Filament::getModelResource($modelClass);
52+
if ($resourceClass) {
53+
return $resourceClass;
54+
}
55+
56+
// 2. try all other panels:
57+
foreach (Filament::getPanels() as $panel) {
58+
/** @var Panel $panel */
59+
$resourceClass = $panel->getModelResource($modelClass);
60+
61+
if ($resourceClass) {
62+
return $resourceClass;
63+
}
64+
}
65+
66+
return null;
67+
}
3968
}

src/Form/Forms/MenuItemForm.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -262,7 +262,7 @@ protected static function getTypeLabel(AbstractMenuItemType $type): string
262262

263263
protected static function getModelLabelFromResource(string $modelClass): string
264264
{
265-
$resourceClass = Filament::getModelResource($modelClass);
265+
$resourceClass = FilamentFlexibleContentBlockPages::getModelResource($modelClass);
266266

267267
if ($resourceClass) {
268268
try {

src/Http/Controllers/AbstractSeoPageController.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,7 @@ protected function setBasicSEO(Page $page)
9999
SEOTools::setDescription(($page->seo_description ?? strip_tags($page->intro)));
100100
SEOTools::opengraph()->setUrl(url()->current());
101101

102-
if($page->seo_keywords){
102+
if ($page->seo_keywords) {
103103
SEOMeta::setKeywords($page->seo_keywords);
104104
}
105105
}

src/Http/Controllers/SeoTagController.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ public function index(Tag $tag): View
2828
}
2929

3030
// Return not found when the tag type does not have seo pages enabled
31-
if ($tag->tagType->has_seo_pages) {
31+
if (! $tag->tagType->has_seo_pages) {
3232
abort(404);
3333
}
3434

@@ -118,7 +118,7 @@ private function createModelLabelsLookup(): array
118118
$enabledModels = FilamentFlexibleContentBlockPages::config()->getTagPageEnabledModels();
119119

120120
foreach ($enabledModels as $modelClass) {
121-
$resourceClass = Filament::getModelResource($modelClass);
121+
$resourceClass = FilamentFlexibleContentBlockPages::getModelResource($modelClass);
122122
/** @var resource|null $resourceClass */
123123
$labels[$modelClass] = $resourceClass ? $resourceClass::getModelLabel() : class_basename($modelClass);
124124
}

src/Http/Middleware/RedirectsMissingPages.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ public function handle(Request $request, Closure $next)
2222
if ($request->query->count() > 0 && $this->shouldRedirect($response)) {
2323
// make sure we do not lose the query string:
2424
/** @var RedirectResponse $response */
25-
if (! Str::contains($response->getTargetUrl(), '?')) {
25+
if (method_exists($response, 'getTargetUrl') && ! Str::contains($response->getTargetUrl(), '?')) {
2626
$response->setTargetUrl($response->getTargetUrl().'?'.$request->getQueryString());
2727
}
2828
}

src/Resources/MenuResource/Pages/ManageMenuItems.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -174,7 +174,7 @@ protected function getMenuItemTypeDescription(MenuItem $record): string
174174

175175
protected function getModelLabelFromResource(string $modelClass): string
176176
{
177-
$resourceClass = Filament::getModelResource($modelClass);
177+
$resourceClass = FilamentFlexibleContentBlockPages::getModelResource($modelClass);
178178

179179
if ($resourceClass) {
180180
try {
@@ -189,7 +189,7 @@ protected function getModelLabelFromResource(string $modelClass): string
189189

190190
protected function getModelIconFromResource(string $modelClass): ?string
191191
{
192-
$resourceClass = Filament::getModelResource($modelClass);
192+
$resourceClass = FilamentFlexibleContentBlockPages::getModelResource($modelClass);
193193

194194
if ($resourceClass) {
195195
try {

src/Services/TagPageService.php

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22

33
namespace Statikbe\FilamentFlexibleContentBlockPages\Services;
44

5-
use Filament\Facades\Filament;
65
use Illuminate\Database\Eloquent\Model;
76
use Illuminate\Pagination\LengthAwarePaginator;
87
use Illuminate\Support\Collection;
@@ -166,8 +165,8 @@ public function getContentCounts(Tag $tag): array
166165

167166
if ($count > 0) {
168167
/** @var class-string<\Filament\Resources\Resource>|null $resourceClass */
169-
$resourceClass = Filament::getModelResource($modelClass);
170-
$label = $resourceClass ? ($count === 1 ? $resourceClass::getModelLabel() : $resourceClass::getPluralLabel()) : class_basename($modelClass);
168+
$resourceClass = FilamentFlexibleContentBlockPages::getModelResource($modelClass);
169+
$label = $resourceClass ? ($count === 1 ? $resourceClass::getModelLabel() : $resourceClass::getPluralModelLabel()) : class_basename($modelClass);
171170
$counts[$label] = $count;
172171
}
173172
}

0 commit comments

Comments
 (0)