Vorschau auf Home nach Kategorien gefiltert

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

Mon Jul 01, 2019 12:59 pm

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: 1663
Joined: Sun Aug 09, 2015 5:01 pm
Location: Zurich
Contact:

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.
Planet Bludit, Tipps, Snippets und nützliche Links. - Newsletter, Informationen zu Bludit (auf Deutsch).
ManuelT
Jr. Bludit
Posts: 7
Joined: Wed Jan 09, 2019 7:35 am

Thu Jul 04, 2019 7:55 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: 1663
Joined: Sun Aug 09, 2015 5:01 pm
Location: Zurich
Contact:

Thu Jul 04, 2019 9:27 pm

Was soll denn auf der Hauptseite ausgegeben werden? Alle Inhalte nach Datum geordnet? Die Kategorien und die dazugehörigen Inhalte? Oder beides?
Planet Bludit, Tipps, Snippets und nützliche Links. - Newsletter, Informationen zu Bludit (auf Deutsch).
ManuelT
Jr. Bludit
Posts: 7
Joined: Wed Jan 09, 2019 7:35 am

Sun Jul 07, 2019 12:13 pm

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: 1663
Joined: Sun Aug 09, 2015 5:01 pm
Location: Zurich
Contact:

Sun Jul 07, 2019 2:14 pm

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');
}
Planet Bludit, Tipps, Snippets und nützliche Links. - Newsletter, Informationen zu Bludit (auf Deutsch).
Post Reply