fix category page

This commit is contained in:
isUnknown 2025-02-21 13:08:53 +01:00
parent 18db74998d
commit a1d945a8ab
5 changed files with 51 additions and 69 deletions

View file

@ -59,11 +59,15 @@ main article > div {
transform: translateX(-1px) translateY(-1px) !important;
}
.page-cover,
article > h1 {
padding-top: calc(50vw);
}
.page-cover {
position: relative;
height: 100svh;
box-sizing: border-box;
padding-top: calc(50vw);
display: flex;
flex-direction: column;
@ -142,8 +146,11 @@ button.toggle.right::before {
height: 100vh;
}
.page-cover {
.page-cover,
article > h1 {
padding-top: 15vw;
}
.page-cover {
min-height: calc(22 * var(--unit--vertical));
}

View file

@ -1,4 +1,3 @@
<?php
use Kirby\Uuid\Uuid;
@ -6,14 +5,29 @@ use Kirby\Uuid\Uuid;
return [
'pattern' => 'categories/(:any)',
'action' => function ($category) {
$allTexts = page('textes')->grandChildren();
$textsInCategory = $allTexts->filter(
fn($text) => Str::slug($text->category()) === $category
);
$children = new Pages();
foreach ($textsInCategory as $text) {
$children->add($text);
}
$title = $textsInCategory->first()->category();
return Page::factory([
'slug' => Str::slug($category) . '-' . Uuid::generate(),
'template' => 'category',
'model' => 'category',
'content' => [
'title' => $category,
'title' => $title,
'uuid' => Uuid::generate(),
],
'children' => $children->toArray(),
]);
}
},
];

View file

@ -1,23 +0,0 @@
<?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,56 +1,40 @@
<?php snippet('header') ?>
<main id="<?= $page->template() ?>">
<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="{
<h1 class="main-title"><?= $page->title() ?></h1>
<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 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): ?>
<li
class="text"
>
<a href="<?= $article->url() ?>" class="text__title no-underline">
<?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>
<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 endforeach ?>
</div>
</article>
</main>

View file

@ -17,7 +17,7 @@
<span class="light">dans</span> <a
href="<?= $page->parent()->url() ?>"
title="voir les textes liés à l'année <?= $page->parent()->title() ?>"><?= $page->parent()->title() ?></a>
/ <a href="/categories/<?= $page->category() ?>"
/ <a href="/categories/<?= Str::slug($page->category()) ?>"
title="voir les textes de la catégorie <?= $page->category() ?>"><?= $page->category() ?></a>
</p>
<?php endslot() ?>