Vorschau auf Home nach Kategorien gefiltert

Post Reply
ManuelT
Ssr. Bludit
Posts: 10
Joined: Wed Jan 09, 2019 7:35 am

Ich versuche auf der Home Seite eine übersichtliche Vorschau der Artikel einzelner Kategorien anzuzeigen:

Alle Artikel
  • Artikel 1
  • Artikel 2
  • Artikel 3
Sport
  • Sport Artikel
  • Sport Artikel 2
  • Sport Artikel 3


Ich kann zwar die Artikel nach Kategorien filtern:

Code: Select all

foreach ($content as $page):
	$category = $page->category();
	if ( $category === "Kategorie-Name"):
Das Problem ist, dass sowohl bei der Suche, also auch beim direkten Aufruf der Kategorie über "domain/category/name" die Artikel zweimal (einmal gefiltert und einmal über alle Artikel) ausgegeben werden.

Gibt es da eine saubere (eingebaute) Möglichkeit einer "if-condition" oder müsste ich mir eine eigene Art "$WHERE_AM_I" über URL Abfrage bauen, da diese ja nur "home" und "page" kennt?
User avatar
Edi
Site Admin
Posts: 3121
Joined: Sun Aug 09, 2015 5:01 pm
Location: Zurich
Has thanked: 54 times
Been thanked: 77 times
Contact:

Hast Du zwei oder mehrere foreach-Schleifen?

Vielleicht ist es am einfachsten, wenn Du den Code des ganzen Templates postest.
Clickwork - Websites mit Bludit | Planet Bludit - Tipps und Snippets
ManuelT
Ssr. Bludit
Posts: 10
Joined: Wed Jan 09, 2019 7:35 am

Edi wrote: Wed Jul 03, 2019 11:40 am Hast Du zwei oder mehrere foreach-Schleifen?

Vielleicht ist es am einfachsten, wenn Du den Code des ganzen Templates postest.
Ich hab das Mediumish Theme zum testen genommen, eine if-Abfrage nach der foreach Schleife rein gesetzt und die Ausgabe für die Suche entfernt, sodass die nur noch für "alle Artikel" angezeigt wird. Bleibt aber immer noch das Problem, dass die Artikel zweimal angezeigt werden, wenn ich die Kategorie direkt aufrufe.

Bei "post-content" wird im Prinzip nur noch der Inhalt über "$page->title();" etc. gerendert.

Code: Select all

<section class="music-posts">
	<div class="section-title">
		<h2><span>Music</span></h2>
	</div>
	<div class="card-columns listmusic">
		<?php if (empty($content)) { $language->p('Keine Artikel gefunden'); } ?>
		<?php
		foreach ($content as $page):
			$category = $page->category();
			if ( $category === "Music"):
		?>
				<div class="card card-music">
					<!-- post-content -->
				</div>

		<?php endif ?>
		<?php endforeach?>
	</div>
</section>


<section class="recent-posts">
	<div class="section-title">
		<?php if ($WHERE_AM_I=='home'):?>
			<h2><span><?php ($WHERE_AM_I=='Suche'?$language->p('Suche'):$language->p('Alle Artikel')) ?></span></h2>
		<?php endif ?>
	</div>
	<div class="card-columns listrecent">
		<?php foreach ($content as $page): ?>
			<div class="card">
				<!-- post-content -->
			</div>
		<?php endforeach ?>

	</div>
</section> 
User avatar
Edi
Site Admin
Posts: 3121
Joined: Sun Aug 09, 2015 5:01 pm
Location: Zurich
Has thanked: 54 times
Been thanked: 77 times
Contact:

Was soll denn auf der Hauptseite ausgegeben werden? Alle Inhalte nach Datum geordnet? Die Kategorien und die dazugehörigen Inhalte? Oder beides?
Clickwork - Websites mit Bludit | Planet Bludit - Tipps und Snippets
ManuelT
Ssr. Bludit
Posts: 10
Joined: Wed Jan 09, 2019 7:35 am

Ich hab mir das so vorgestellt:

----
Kategorie A | alle ansehen (mit Link auf Kategorie URL)
  • X-Anzahl an Vorschau Karten (Mit Titel, Vorschaubild, Datum...
----
Kategorie B ...
  • "
----
Alle Artikel | alle ansehen (Link zu Seite mit allen Artikeln chronologisch aufgelistet)
  • X-Anzahl an Vorschau Karten
----
User avatar
Edi
Site Admin
Posts: 3121
Joined: Sun Aug 09, 2015 5:01 pm
Location: Zurich
Has thanked: 54 times
Been thanked: 77 times
Contact:

In diesem Fall müsstest Du tatsächlich noch eine weitere Bedingung einbauen.

Beispielsweise, dass Kategorien-Seiten (Seiten deren URI mit dem String /category/ beginnen) mit einem zusätzlichen Template category.php ausgegeben werden:

Code: Select all

$pos = strpos($_SERVER['REQUEST_URI'], '/category/');

if ($pos === 0) {
   include(THEME_DIR_PHP.'category.php');
}
Clickwork - Websites mit Bludit | Planet Bludit - Tipps und Snippets
Post Reply