Page 1 of 1

Vorschau auf Home nach Kategorien gefiltert

Posted: Mon Jul 01, 2019 12:59 pm
by ManuelT
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?

Re: Vorschau auf Home nach Kategorien gefiltert

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

Vielleicht ist es am einfachsten, wenn Du den Code des ganzen Templates postest.

Re: Vorschau auf Home nach Kategorien gefiltert

Posted: Thu Jul 04, 2019 7:55 am
by ManuelT
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> 

Re: Vorschau auf Home nach Kategorien gefiltert

Posted: Thu Jul 04, 2019 9:27 pm
by Edi
Was soll denn auf der Hauptseite ausgegeben werden? Alle Inhalte nach Datum geordnet? Die Kategorien und die dazugehörigen Inhalte? Oder beides?

Re: Vorschau auf Home nach Kategorien gefiltert

Posted: Sun Jul 07, 2019 12:13 pm
by ManuelT
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
----

Re: Vorschau auf Home nach Kategorien gefiltert

Posted: Sun Jul 07, 2019 2:14 pm
by Edi
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');
}