diff options
author | Thomas Lange <code@nerdmind.de> | 2021-07-01 20:11:34 +0200 |
---|---|---|
committer | Thomas Lange <code@nerdmind.de> | 2021-07-01 20:11:34 +0200 |
commit | e6cef37e0c782fe770db20888d99c17d10e2c479 (patch) | |
tree | aed0790a0fa8eb7cceef7bb32aef4f69b724d619 /theme/default/html/category | |
parent | f0ea19767d502ec7b5afff7c66c2681292175a3b (diff) | |
download | blog-e6cef37e0c782fe770db20888d99c17d10e2c479.tar.gz blog-e6cef37e0c782fe770db20888d99c17d10e2c479.tar.xz blog-e6cef37e0c782fe770db20888d99c17d10e2c479.zip |
Add category system to categorize posts (readme)
This commit implements a new category system to categorize posts. Each
category can have an unlimited number of nested children categories. A
single post don't necessarily need to be in a category, but it can.
Each category can have a full content body like posts or pages, so you
have enough space to describe the content of your categories.
Please note that you need to have at least the following MySQL/MariaDB
versions to use the category system, because it uses "WITH RECURSIVE"
database queries, the so-called "Common-Table-Expressions (CTE)".
MariaDB: 10.2.2
MySQL: 8.0
See: https://mariadb.com/kb/en/with/
See: https://dev.mysql.com/doc/refman/8.0/en/with.html
Diffstat (limited to 'theme/default/html/category')
-rw-r--r-- | theme/default/html/category/item.php | 27 | ||||
-rw-r--r-- | theme/default/html/category/list.php | 23 | ||||
-rw-r--r-- | theme/default/html/category/main.php | 44 |
3 files changed, 94 insertions, 0 deletions
diff --git a/theme/default/html/category/item.php b/theme/default/html/category/item.php new file mode 100644 index 0000000..9435581 --- /dev/null +++ b/theme/default/html/category/item.php @@ -0,0 +1,27 @@ +<?php +#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%# +# Category Item Template [Thomas Lange <code@nerdmind.de>] # +#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%# +# # +# [see documentation] # +# # +#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%# +?> +<article class="item"> + <header> + <h2 class="fa fa-tag"> + <a title="<?=$Language->text('select_category')?>: »<?=escapeHTML($CATEGORY['ATTR']['NAME'])?>«" href="<?=$CATEGORY['URL']?>"> + <?=escapeHTML($CATEGORY['ATTR']['NAME'])?> + </a> + </h2> + <span class="brackets info"> + <?=$Language->text('posts')?>: <?=$COUNT['POST']?> – + <?=$Language->text('categories')?>: <?=$COUNT['CHILDREN']?> + </span> + </header> + <?php if($IS_ROOT): ?> + <blockquote cite="<?=$CATEGORY['URL']?>"> + <?=$CATEGORY['BODY']['HTML']()?> + </blockquote> + <?php endif ?> +</article> diff --git a/theme/default/html/category/list.php b/theme/default/html/category/list.php new file mode 100644 index 0000000..9fffb2b --- /dev/null +++ b/theme/default/html/category/list.php @@ -0,0 +1,23 @@ +<?php +#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%# +# Category List Template [Thomas Lange <code@nerdmind.de>] # +#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%# +# # +# [see documentation] # +# # +#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%# +?> +<h1><i class="fa fa-tags"></i><?=$Language->text('category_overview')?></h1> +<p><?=$Language->text('category_list_title', $PAGINATION['THIS'])?></p> + +<?php if($LIST['CATEGORIES']): ?> + <div class="item-container category"> + <?php foreach($LIST['CATEGORIES'] as $category): ?> + <?php echo $category; ?> + <?php endforeach; ?> + </div> +<?php else: ?> + <p><?=$Language->text('category_list_empty')?></p> +<?php endif ?> + +<?=$PAGINATION['HTML']?> diff --git a/theme/default/html/category/main.php b/theme/default/html/category/main.php new file mode 100644 index 0000000..86b50e0 --- /dev/null +++ b/theme/default/html/category/main.php @@ -0,0 +1,44 @@ +<?php +#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%# +# Category Main Template [Thomas Lange <code@nerdmind.de>] # +#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%# +# # +# [see documentation] # +# # +#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%# +?> +<h1 id="category-heading"><i class="fa fa-tag"></i><?=escapeHTML($CATEGORY['ATTR']['NAME'])?></h1> +<?php if($CATEGORIES && array_pop($CATEGORIES)): ?> + <ul class="category-heading-list"> + <?php foreach($CATEGORIES as $category): ?> + <li><a href="<?=$category['URL']?>"><?=escapeHTML($category['ATTR']['NAME'])?></a></li> + <?php endforeach ?> + </ul> +<?php endif ?> + +<div id="category-body"> + <?=$CATEGORY['BODY']['HTML']()?> +</div> + +<?php if(!empty($LIST['CATEGORIES'])): ?> + <div class="item-container category"> + <?php foreach($LIST['CATEGORIES'] as $category): ?> + <?php echo $category; ?> + <?php endforeach; ?> + </div> +<?php endif ?> + +<h2 id="category-posts-heading"><i class="fa fa-newspaper-o"></i><?=$Language->text('posts')?></h2> +<div id="category-posts-page"><?=$Language->text('category_posts_page', $PAGINATION['THIS'])?></div> +<?php if($LIST['POSTS']): ?> + <div class="item-container post"> + <?php foreach($LIST['POSTS'] as $post): ?> + <?php echo $post; ?> + <?php endforeach; ?> + </div> + <?=$PAGINATION['HTML']?> +<?php else: ?> + <div class="item-container post"> + <?=$Language->text('category_empty')?> + </div> +<?php endif ?> |