Überschrift in der Kategorieliste

Post Reply
velotrav
Jr. Bludit
Posts: 5
Joined: Wed Nov 08, 2023 11:33 am
Has thanked: 1 time

Hallo,
ich habe in der Seitenleiste meines Blogs einige Kategorien verlinkt. Wenn ich einen Link aufrufe, werden wie gewollt alle Artikel der Kategorie angezeigt.
Beispiel:
https://www.velo-traveller.de/category/ ... negal-2018

Nun suche ich nach einer Möglichkeit, auf dieser Seite eine h1-Überschrift, die aus dem Kategorienamen automatisch erzeugt wird, anzuzeigen.

Ist das machbar?

Auch in dem Pluigin "Kategorien" habe ich keine Einstellungsmöglichkeit gefunden.

Gruß, Calle
wjar
Jr. Bludit
Posts: 6
Joined: Fri Dec 16, 2022 6:58 pm
Been thanked: 1 time

Stand vor dem gleichen Problem und habe in der index.php des Themes die Abfrage um category ergänzt:

Code: Select all

<!-- Content -->
<?php
	// $WHERE_AM_I variable detect where the user is browsing
	// If the user is watching a particular page the variable takes the value "page"
	// If the user is watching the frontpage the variable takes the value "home"
	if ($WHERE_AM_I == 'page') {
		include(THEME_DIR_PHP.'page.php');
	} elseif ($WHERE_AM_I == 'home') {
		include(THEME_DIR_PHP.'home.php');
	} elseif ($WHERE_AM_I == 'category') {
		include(THEME_DIR_PHP.'category.php');
	} else {
		include(THEME_DIR_PHP.'home.php');
	}
?>
Im Verzeichnis php dann eine Kopie der page.php als category.php erstellt und nach

Code: Select all

<!-- Begin Post -->
und vor

Code: Select all

<!-- Begin Content -->
folgendes eingefügt:

Code: Select all

<?php
	// Get the category key from the URL
	$categoryKey = $url->slug();
	// Create the Category-Object
	$category = new Category($categoryKey);
	// Print the category name
	echo '<h1>'.$category->name().'</h1>';
	// Print the category description
	echo  '<div>'.$category->description().'</div>';
?>
velotrav
Jr. Bludit
Posts: 5
Joined: Wed Nov 08, 2023 11:33 am
Has thanked: 1 time

Vielen Dank für die Antwort.
Leider hat es nicht gut funktioniert. Nach dem Einsetzen der

Code: Select all

if ($WHERE_AM_I == 'page') {
		include(THEME_DIR_PHP.'page.php');
	} elseif ($WHERE_AM_I == 'home') {
		include(THEME_DIR_PHP.'home.php');
	} elseif ($WHERE_AM_I == 'category') {
		include(THEME_DIR_PHP.'category.php');
	} else {
		include(THEME_DIR_PHP.'home.php');
	}
Werden die Inhalte der Startseite doppelt angezeigt. Die h1-Überschrift wird auf der Kategorieliste zwar angezeigt, aber auch dort ist dann das Layout "zerschossen".

Gruß, Calle
dirtdiver2010
Master Bludit
Posts: 129
Joined: Fri Jan 15, 2016 6:07 pm
Has thanked: 1 time
Been thanked: 3 times

velotrav wrote: Tue Mar 12, 2024 12:41 pm Vielen Dank für die Antwort.
Leider hat es nicht gut funktioniert. Nach dem Einsetzen der

Code: Select all

if ($WHERE_AM_I == 'page') {
		include(THEME_DIR_PHP.'page.php');
	} elseif ($WHERE_AM_I == 'home') {
		include(THEME_DIR_PHP.'home.php');
	} elseif ($WHERE_AM_I == 'category') {
		include(THEME_DIR_PHP.'category.php');
	} else {
		include(THEME_DIR_PHP.'home.php');
	}
Werden die Inhalte der Startseite doppelt angezeigt. Die h1-Überschrift wird auf der Kategorieliste zwar angezeigt, aber auch dort ist dann das Layout "zerschossen".

Gruß, Calle
Hast du die Seite page.php und category.php erstellt?
velotrav
Jr. Bludit
Posts: 5
Joined: Wed Nov 08, 2023 11:33 am
Has thanked: 1 time

Hast du die Seite page.php und category.php erstellt?
Ja, gemäß des Tip von wjar habe ich zum einen die Datei
bludit/bl-themes/blogx/index.php editiert (blogx ist mein Template)

und dann eine Kopie von:
bludit/bl-themes/blogx/php/page.php erstellt und in category.php umbenannt und ebenfalls editiert.

Ich nutze die Bludit-Version 3.15.0
velotrav
Jr. Bludit
Posts: 5
Joined: Wed Nov 08, 2023 11:33 am
Has thanked: 1 time

Den Fehler der doppelten Anzeige sowie Layoutprobleme auf der Startseite konnte ich nun beheben. Ich hatte den Code nicht sauber eingefügt. :oops:

In der Kategorieliste wird nun die h1-Überschrift und die category description angezeigt.

Leider wird in der Kategorieliste nur der jeweils erste Beitrag ohne Weiterlesen-Link angezeigt.

Vermutlich befindet sich das Problem im Code der index.php, denn wenn ich dort den "alten" Code wieder einsetze, habe ich das Problem nicht. Allerdings auch keine h1-Überschrift in der Kategorieliste.

Meine PHP-Kenntnisse sind allerdings dürftig und ich bewege mich da in einem unsicheren Terrain.

Ich poste an dieser Stelle mal index.php, vielleicht sieht jemand mit mehr Kenntnissen den Fehler.
<!DOCTYPE html>
<html lang="<?php echo Theme::lang() ?>">
<head>
<?php include(THEME_DIR_PHP.'head.php'); ?>
</head>
<body>

<!-- Load Bludit Plugins: Site Body Begin -->
<?php Theme::plugins('siteBodyBegin'); ?>

<!-- Navbar -->
<?php include(THEME_DIR_PHP.'navbar.php'); ?>

<!-- Content -->


<div class="container">
<div class="row">

<!-- Blog Posts -->
<div class="col-md-9">
<?php
// Bludit content are pages
// But if you order the content by date
// These pages works as posts

// $WHERE_AM_I variable detect where the user is browsing
// If the user is watching a particular page the variable takes the value "page"
// If the user is watching the frontpage the variable takes the value "home"
if ($WHERE_AM_I == 'page') {
include(THEME_DIR_PHP.'page.php');
} elseif ($WHERE_AM_I == 'home') {
include(THEME_DIR_PHP.'home.php');
} elseif ($WHERE_AM_I == 'category') {
include(THEME_DIR_PHP.'category.php');
} else {
include(THEME_DIR_PHP.'home.php');
}
?>
</div>

<!-- Right Sidebar -->
<div class="col-md-3">
<?php include(THEME_DIR_PHP.'sidebar.php'); ?>
</div>

</div>
</div>
wjar
Jr. Bludit
Posts: 6
Joined: Fri Dec 16, 2022 6:58 pm
Been thanked: 1 time

Sorry, das ist alles schon länger her, ich nutze auch ein anderes Theme und liste nur die Beiträge einer Kategorie auf, daher brachte Dich der Tipp nur die halbe Strecke weit.

Für das Theme Blogx bitte die category.php aus einer Kopie der home.php erstellen. Den Code für die h1

Code: Select all

<?php
// Get the category key from the URL
$categoryKey = $url->slug();
// Create the Category-Object
$category = new Category($categoryKey);
// Print the category name
echo '<h1 class="posttitle">'.$category->name().'</h1>';
// Print the category description
echo  '<div class="wrapfooter">'.$category->description().'</div>';
?>
dann vor

Code: Select all

<?php foreach ($content as $page) : ?>
einsetzen. Habe es auf meinem lokalen Testsystem ausprobiert und es hat funktioniert.
velotrav
Jr. Bludit
Posts: 5
Joined: Wed Nov 08, 2023 11:33 am
Has thanked: 1 time

Habe es auf meinem lokalen Testsystem ausprobiert und es hat funktioniert.
Vielen Dank für Deine Mühe.
Bei mir funktioniert es auch und sieht so aus, wie ich es mir gewünscht habe.

Nochmals vielen Dank.
Gruß, Calle
Post Reply