This commit is contained in:
isUnknown 2025-02-03 16:32:36 +01:00
parent 1e91353c86
commit fc267d80d1
5 changed files with 110 additions and 51 deletions

View file

@ -1,3 +1,4 @@
<?php
use Kirby\Uuid\Uuid;
@ -5,18 +6,14 @@ use Kirby\Uuid\Uuid;
return [
'pattern' => 'categories/(:any)',
'action' => function ($category) {
$kirby = kirby();
return Page::factory(
[
'slug' => '',
'template' => 'category',
'model' => 'categories',
'content' => [
return Page::factory([
'slug' => Str::slug($category) . '-' . Uuid::generate(),
'template' => 'category',
'model' => 'category',
'content' => [
'title' => $category,
'uuid' => Uuid::generate(),
]
]
);
],
]);
}
];

23
site/models/category.php Normal file
View file

@ -0,0 +1,23 @@
<?php
use Kirby\Cms\Pages;
use Kirby\Cms\Page;
use Kirby\Uuid\Uuid;
class CategoryPage extends Page
{
public function children(): Pages
{
$category = $this->title()->value();
$allTexts = page("textes")->grandChildren();
$textsInCategory = $allTexts->filterBy('category', $category);
$children = new Pages();
foreach ($textsInCategory as $text) {
$children->add($text);
}
return $children;
}
}

View file

@ -1,36 +1,58 @@
<?php snippet('header'); ?>
<?php snippet('header') ?>
<main id="<?= $page->template() ?>">
<article>
<?php snippet('cover', slots: true) ?>
<?php slot('title') ?>
<?php endslot() ?>
<?php slot('text') ?>
<h2 class="main-title <?= setTitleFontSizeClass($page->title()) ?>"><?= $page->title() ?></h2>
<article>
<?php snippet('cover', array('isOpen' => true), slots: true) ?>
<?php slot('title') ?>
<h1 class="main-title"><?= $page->title() ?></h1>
<?php endslot() ?>
<?php endsnippet() ?>
<div id="main-content"
x-data="{
edito: false
}"
>
<?php if ($page->edito()->isNotEmpty()): ?>
<div
id="edito"
:class="edito ? '' : 'short'"
>
<?= $page->edito() ?>
</div>
<button
:class="edito ? 'open' : 'close'"
class="see-more toggle-btn toggle-btn--left"
@click="edito = !edito"
>Lire</button>
<?php endif ?>
<ul class="texts">
<?php foreach($kirby->collection('categories') as $category): ?>
<?php if ($category->title() == $page->title()): ?>
<?php foreach($category['texts'] as $article): ?>
<li
class="text"
>
<a href="<?= $article->url() ?>" class="text__title no-underline">
<h4><?= $article->title() ?></h4>
</a>
<div class="text__infos">
<p>
<span class="light">par</span>
<a class="author" href="/auteurs/<?= Str::slug($article->author()->toPage()->title()) ?>"><?= $article->author()->toPage()->title() ?></a><br>
<span class="light">publié le </span><?= $article->published()->toDate('d/m/Y') ?><br>
<span class="light">dans</span> <a href="<?= $article->parent()->url() ?>"><?= $article->parent()->title() ?></a> / <a href="/categories/<?= $article->category() ?>"><?= $article->category() ?></a>
</p>
</div>
</li>
<?php endforeach ?>
<?php endif ?>
</ul>
<?php foreach($page->children() as $article): ?>
<li
class="text"
>
<a href="<?= $article->url() ?>" class="text__title no-underline">
<h4><?= $article->title() ?></h4>
</a>
<div class="text__infos">
<p>
<span class="light">par</span>
<?php
try {
echo $article->author()->toPage()->title();
} catch (\Throwable $th) {
throw new Exception(json_encode($article->author()), 1);
}
?>
<a class="author" href="/auteurs/<?= Str::slug($article->author()->toPage()->title()) ?>"><?= $article->author()->toPage()->title() ?></a><br>
<span class="light">publié le </span><?= $article->published()->toDate('d/m/Y') ?><br>
<span class="light">dans</span> <a href="<?= $article->parent()->url() ?>"><?= $article->parent()->title() ?></a> / <a href="/categories/<?= $article->category() ?>"><?= $article->category() ?></a>
</p>
</div>
</li>
<?php endforeach ?>
<?php endslot() ?>
<?php endsnippet() ?>
</article>
</main>
</div>
</article>
</main>
<?php snippet('footer') ?>

View file

@ -4,20 +4,29 @@
<?php snippet('cover', array('isOpen' => true), slots: true) ?>
<?php slot('title') ?>
<h1 class="main-title"><?= $page->title() ?></h1>
<?php if ($page->subtitle()->isNotEmpty()): ?>
<h2 class="main-subtitle fs-l"><?= $page->subtitle()->inline() ?></h2>
<?php endif ?>
<p>
<span class="light">ouverte depuis le </span><?= $page->openDate()->toDate('d/m/Y') ?>
</p>
<?php endslot() ?>
<?php endsnippet() ?>
<div id="main-content">
<?php if ($page->chapo()->isNotEmpty()): ?>
<div id="chapo">
<?= $page->chapo() ?>
<div id="main-content"
x-data="{
edito: false
}"
>
<?php if ($page->edito()->isNotEmpty()): ?>
<div
id="edito"
:class="edito ? '' : 'short'"
>
<?= $page->edito() ?>
</div>
<button
:class="edito ? 'open' : 'close'"
class="see-more toggle-btn toggle-btn--left"
@click="edito = !edito"
>Lire</button>
<?php endif ?>
<ul class="texts">
<?php foreach($page->children() as $article): ?>