Add breadcrumbs to site documentation views
- Integrate breadcrumb rendering across documentation views (`index`, `category`, `view`, and `no-default-version`). - Add support for dynamic JSON-LD breadcrumb generation.
This commit is contained in:
@@ -1,9 +1,13 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
|
use App\Models\DocumentationCategory;
|
||||||
|
use App\Models\DocumentationVersion;
|
||||||
|
use App\Models\Documentation;
|
||||||
use App\Services\WebsiteTranslations;
|
use App\Services\WebsiteTranslations;
|
||||||
use App\Enums\Site\ProjectSection;
|
use App\Enums\Site\ProjectSection;
|
||||||
use App\Models\Project;
|
use App\Models\Project;
|
||||||
use Diglactic\Breadcrumbs\Breadcrumbs;
|
use Diglactic\Breadcrumbs\Breadcrumbs;
|
||||||
|
use Illuminate\Support\Collection;
|
||||||
|
|
||||||
Breadcrumbs::for('home', function ($trail, Project $project, WebsiteTranslations $websiteTranslations) {
|
Breadcrumbs::for('home', function ($trail, Project $project, WebsiteTranslations $websiteTranslations) {
|
||||||
$trail->push($websiteTranslations->translate('Home'), ProjectSection::Home->url($project, $websiteTranslations->getLanguage()));
|
$trail->push($websiteTranslations->translate('Home'), ProjectSection::Home->url($project, $websiteTranslations->getLanguage()));
|
||||||
@@ -14,3 +18,43 @@ Breadcrumbs::for('feedbacks.index', function ($trail, Project $project, WebsiteT
|
|||||||
|
|
||||||
$trail->push($websiteTranslations->translate('site.Feedback'), ProjectSection::Feedback->url($project, $websiteTranslations->getLanguage()));
|
$trail->push($websiteTranslations->translate('site.Feedback'), ProjectSection::Feedback->url($project, $websiteTranslations->getLanguage()));
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// Documentation
|
||||||
|
Breadcrumbs::for('documentation.no-default-version', function ($trail, Project $project, WebsiteTranslations $websiteTranslations) {
|
||||||
|
$trail->parent('home', $project, $websiteTranslations);
|
||||||
|
|
||||||
|
$trail->push($websiteTranslations->translate('site.Documentation'), ProjectSection::Documentation->url($project, $websiteTranslations->getLanguage()));
|
||||||
|
});
|
||||||
|
|
||||||
|
Breadcrumbs::for('documentation.index', function ($trail, Project $project, WebsiteTranslations $websiteTranslations, DocumentationVersion $version) {
|
||||||
|
$trail->parent('home', $project, $websiteTranslations);
|
||||||
|
|
||||||
|
$trail->push($websiteTranslations->translate('site.Documentation'), ProjectSection::DocumentationVersion->url($project, $websiteTranslations->getLanguage(), ['version' => $version->slug]));
|
||||||
|
});
|
||||||
|
|
||||||
|
Breadcrumbs::for('documentation.category-path', function ($trail, Project $project, WebsiteTranslations $websiteTranslations, DocumentationVersion $version, Collection $categoryPath) {
|
||||||
|
$trail->parent('documentation.index', $project, $websiteTranslations, $version);
|
||||||
|
foreach ($categoryPath as $pathItem) {
|
||||||
|
$trail->push(
|
||||||
|
$pathItem->content->title,
|
||||||
|
ProjectSection::DocumentationCategory->url($project, $websiteTranslations->getLanguage(), ['version' => $version->slug, 'slug' => $pathItem->slug])
|
||||||
|
);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
Breadcrumbs::for('documentation.category', function ($trail, Project $project, WebsiteTranslations $websiteTranslations, DocumentationVersion $version, DocumentationCategory $category, ?Collection $categoryPath) {
|
||||||
|
$trail->parent('documentation.category-path', $project, $websiteTranslations, $version, $categoryPath ?? collect());
|
||||||
|
$trail->push(
|
||||||
|
$category->content->title,
|
||||||
|
ProjectSection::DocumentationCategory->url($project, $websiteTranslations->getLanguage(), ['version' => $version->slug, 'slug' => $category->slug])
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
Breadcrumbs::for('documentation.view', function ($trail, Project $project, WebsiteTranslations $websiteTranslations, DocumentationVersion $version, Documentation $documentation, ?Collection $categoryPath) {
|
||||||
|
$trail->parent('documentation.category-path', $project, $websiteTranslations, $version, $categoryPath ?? collect());
|
||||||
|
$trail->push(
|
||||||
|
$documentation->content->title,
|
||||||
|
ProjectSection::Documentation->url($project, $websiteTranslations->getLanguage(), ['version' => $version->slug, 'slug' => $documentation->slug])
|
||||||
|
);
|
||||||
|
});
|
||||||
|
// End Documentation
|
||||||
|
|||||||
@@ -1,6 +1,9 @@
|
|||||||
@section('meta_title', $category->content?->title . ' - ' . $project->name . ' ' . $version->title)
|
@section('meta_title', $category->content?->title . ' - ' . $project->name . ' ' . $version->title)
|
||||||
@section('h1', $category->content?->title)
|
@section('h1', $category->content?->title)
|
||||||
|
@section('breadcrumbs', Breadcrumbs::render('documentation.category', $project, $websiteTranslations, $version, $category, $categoryPath))
|
||||||
|
@push('head')
|
||||||
|
{{ Breadcrumbs::view('breadcrumbs::json-ld', 'documentation.category', $project, $websiteTranslations, $version, $category, $categoryPath) }}
|
||||||
|
@endpush
|
||||||
<x-site.layout :project="$project" :websiteTranslations="$websiteTranslations" :documentationVersion="$version">
|
<x-site.layout :project="$project" :websiteTranslations="$websiteTranslations" :documentationVersion="$version">
|
||||||
@foreach($categories as $category)
|
@foreach($categories as $category)
|
||||||
@continue(! $category->content?->title)
|
@continue(! $category->content?->title)
|
||||||
|
|||||||
@@ -1,6 +1,9 @@
|
|||||||
@section('meta_title', $websiteTranslations->translate('site.Documentation') . ' - ' . $project->name . ' ' . $version->title)
|
@section('meta_title', $websiteTranslations->translate('site.Documentation') . ' - ' . $project->name . ' ' . $version->title)
|
||||||
@section('h1', $websiteTranslations->translate('site.Documentation'))
|
@section('h1', $websiteTranslations->translate('site.Documentation'))
|
||||||
|
@section('breadcrumbs', Breadcrumbs::render('documentation.index', $project, $websiteTranslations, $version))
|
||||||
|
@push('head')
|
||||||
|
{{ Breadcrumbs::view('breadcrumbs::json-ld', 'documentation.index', $project, $websiteTranslations, $version) }}
|
||||||
|
@endpush
|
||||||
<x-site.layout :project="$project" :websiteTranslations="$websiteTranslations" :documentationVersion="$version">
|
<x-site.layout :project="$project" :websiteTranslations="$websiteTranslations" :documentationVersion="$version">
|
||||||
@foreach($categories as $category)
|
@foreach($categories as $category)
|
||||||
@continue(! $category->content?->title)
|
@continue(! $category->content?->title)
|
||||||
|
|||||||
+4
-1
@@ -1,6 +1,9 @@
|
|||||||
@section('meta_title', $websiteTranslations->translate('site.Documentation not created'))
|
@section('meta_title', $websiteTranslations->translate('site.Documentation not created'))
|
||||||
@section('h1', $websiteTranslations->translate('site.Documentation not created'))
|
@section('h1', $websiteTranslations->translate('site.Documentation not created'))
|
||||||
|
@section('breadcrumbs', Breadcrumbs::render('documentation.no-default-version', $project, $websiteTranslations))
|
||||||
|
@push('head')
|
||||||
|
{{ Breadcrumbs::view('breadcrumbs::json-ld', 'documentation.no-default-version', $project, $websiteTranslations) }}
|
||||||
|
@endpush
|
||||||
<x-site.layout :project="$project" :websiteTranslations="$websiteTranslations">
|
<x-site.layout :project="$project" :websiteTranslations="$websiteTranslations">
|
||||||
|
|
||||||
</x-site.layout>
|
</x-site.layout>
|
||||||
|
|||||||
@@ -1,6 +1,9 @@
|
|||||||
@section('meta_title', $documentation->content?->title . ' - ' . $project->name . ' ' . $version->title)
|
@section('meta_title', $documentation->content?->title . ' - ' . $project->name . ' ' . $version->title)
|
||||||
@section('h1', $documentation->content?->title)
|
@section('h1', $documentation->content?->title)
|
||||||
|
@section('breadcrumbs', Breadcrumbs::render('documentation.view', $project, $websiteTranslations, $version, $documentation, $categoryPath))
|
||||||
|
@push('head')
|
||||||
|
{{ Breadcrumbs::view('breadcrumbs::json-ld', 'documentation.view', $project, $websiteTranslations, $version, $documentation, $categoryPath) }}
|
||||||
|
@endpush
|
||||||
<x-site.layout :project="$project" :websiteTranslations="$websiteTranslations" :documentationVersion="$version">
|
<x-site.layout :project="$project" :websiteTranslations="$websiteTranslations" :documentationVersion="$version">
|
||||||
<div class="line-numbers">{!! $documentation->content->content !!}</div>
|
<div class="line-numbers">{!! $documentation->content->content !!}</div>
|
||||||
@push('scripts')
|
@push('scripts')
|
||||||
|
|||||||
Reference in New Issue
Block a user