Merge pull request 'home zeigt nun dynamisch die Kategorien an' (#35) from Startseite into dev

Reviewed-on: #35
This commit was merged in pull request #35.
This commit is contained in:
2026-06-17 12:08:10 +02:00
2 changed files with 62 additions and 26 deletions
+22 -16
View File
@@ -19,28 +19,34 @@ include_once 'php/controller/home-controller.php';
sea takimata sanctus est Lorem ipsum dolor sit amet. sea takimata sanctus est Lorem ipsum dolor sit amet.
</p> </p>
<!-- Flexbox --> <!-- Flexbox für aktive Kategorien -->
<div class="flexbox"> <div class="flexbox">
<?php
if (!empty($categoriesWithArticles) && is_array($categoriesWithArticles)):
foreach ($categoriesWithArticles as $category):
?>
<div class="container"> <div class="container">
<a href="index.php?pfad=showCategory&category=informatik" class="category-link">Informatik</a> <a href="index.php?pfad=showCategory&category=<?php echo htmlspecialchars($category['slug']); ?>" class="category-link">
<div class="article-link"> <?php echo htmlspecialchars($category['name']); ?>
<a href="index.php?pfad=showArticle&id=<?php echo $dummy3->getId()?>"><?php if(isset($dummy3)){echo $dummy3->getTitle();}else{echo "Fehler: Beitrag nicht gefunden!";} ?></a> </a>
</div>
</div>
<div class="container"> <!-- die 5 neuesten Beiträge der Kategorie -->
<a href="index.php?pfad=showCategory&category=mathe" class="category-link">Mathe</a> <div class="article-links-wrapper">
<?php foreach ($category['articles'] as $article): ?>
<div class="article-link"> <div class="article-link">
<a href="index.php?pfad=showArticle&id=<?php echo $dummy1->getId()?>"><?php if(isset($dummy1)){echo $dummy1->getTitle();}else{echo "Fehler: Beitrag nicht gefunden!";} ?></a> <a href="index.php?pfad=showArticle&id=<?php echo htmlspecialchars($article->getId()); ?>">
</div> <?php echo htmlspecialchars($article->getTitle()); ?>
</div> </a>
</div>
<div class="container"> <?php endforeach; ?>
<a href="index.php?pfad=showCategory&category=physik" class="category-link">Physik</a>
<div class="article-link">
<a href="index.php?pfad=showArticle&id=<?php echo $dummy2->getId()?>"><?php if(isset($dummy2)){echo $dummy2->getTitle();}else{echo "Fehler: Beitrag nicht gefunden!";} ?></a>
</div> </div>
</div> </div>
<?php
endforeach;
else:
?>
<p>Aktuell sind keine Beiträge in den Kategorien vorhanden.</p>
<?php endif; ?>
</div> </div>
</main> </main>
+35 -5
View File
@@ -6,14 +6,44 @@ require_once 'php/model/Article.php';
require_once 'php/model/ArticleManager.php'; require_once 'php/model/ArticleManager.php';
require_once 'php/model/LocalArticleManager.php'; require_once 'php/model/LocalArticleManager.php';
$categoriesWithArticles = [];
$allowedCategories = [
'deutsch', 'englisch', 'franzoesisch', 'latein', 'literatur',
'mathe', 'biologie', 'chemie', 'physik', 'informatik', 'astronomie',
'geschichte', 'erdkunde', 'sozialkunde', 'wirtschaft', 'religion',
'ethik', 'philosophie', 'psychologie', 'kunst', 'musik', 'theater',
'technik', 'werken', 'hauswirtschaft', 'sport'
];
try { try {
$articleManager = ArticleManager::getInstance(); $articleManager = ArticleManager::getInstance();
// Beziehen der Dummy-Beiträge aus dem ArticleManager:
$dummy1 = $articleManager->getArticle(1); foreach ($allowedCategories as $categorySlug) {
$dummy2 = $articleManager->getArticle(2); $allCategoryArticles = $articleManager->getArticlesByCategory($categorySlug);
$dummy3 = $articleManager->getArticle(3);
// nur Kategorien, die Beiträge enthält:
if (!empty($allCategoryArticles) && is_array($allCategoryArticles)) {
// Beiträge nach Erstellungsdatum sortieren:
usort($allCategoryArticles, function($a, $b) {
$dateA = strtotime($a->getCreationDate());
$dateB = strtotime($b->getCreationDate());
return $dateB <=> $dateA; // Absteigende Sortierung
});
// auf die 5 zuletzt hinzugefügten Beiträge begrenzen:
$limitedArticles = array_slice($allCategoryArticles, 0, 5);
$categoriesWithArticles[] = [
'slug' => $categorySlug,
'name' => ucfirst($categorySlug), // Erster Buchstabe groß für die Ansicht
'articles' => $limitedArticles
];
}
}
} catch (Exception $e){ } catch (Exception $e){
$_SESSION["message"] = "internal_error"; $_SESSION["message"] = "internal_error";
echo "Fehler aufgetreten: " . $e->getMessage();
} }
?> ?>