Loop für mehrere Kategorien

Post Reply
gerald
Jr. Bludit
Posts: 8
Joined: Wed Mar 24, 2021 5:29 pm

erstmal vielen Dank für dieses super schnelle und schlanke CMS!

Folgendes Problem:
Ich möchte in home.php einen Loop erstellen, der alle Beiträge von bestimmten Kategorien anzeigt. (category1 + category2) Ich hatte gehofft dass es über ein array funktioniert - leider nicht.

Zusätzlich würde ich die Beiträge noch gerne mit order = rand(); oder ähnlichem Befehl in beliebiger Reihenfolge ausgeben lassen.

Hier mein Aufbau:

Code: Select all

<?php
//$categoryKey = 'category1'; 
$categoryKey = array('category1', 'category2'); 
$category = getCategory($categoryKey);

foreach ($category->pages() as $pageKey) {
$page = new Page($pageKey);
?>

    <h3><?php echo $page->title() ?></h3>

<?php } ?>

Vielen Dank für jeden Tipp!
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:

gerald wrote: Wed Mar 24, 2021 5:50 pm Ich möchte in home.php einen Loop erstellen, der alle Beiträge von bestimmten Kategorien anzeigt. (category1 + category2) Ich hatte gehofft dass es über ein array funktioniert - leider nicht.
Ich würde etwas versuchen wie

Code: Select all

if ($page->category()=="category1" || $page->category()=="category2") {

   Was in diesem Fall gemacht werden soll.

};
Zusätzlich würde ich die Beiträge noch gerne mit order = rand(); oder ähnlichem Befehl in beliebiger Reihenfolge ausgeben lassen.
Das lässt sich möglicherweise damit machen:

https://www.php.net/manual/de/function.shuffle.php
Clickwork - Websites mit Bludit | Planet Bludit - Tipps und Snippets
gerald
Jr. Bludit
Posts: 8
Joined: Wed Mar 24, 2021 5:29 pm

Super. Vielen Dank für die Hilfe. Auf Basis von
https://docs.bludit.com/en/dev-snippets/content-pages (#List all the Pages) habe ich das mit deiner if Abfrage innerhalb des foreach loops erweitert. Funktioniert einwandfrei.

Mit dem shuffle Befehl komme ich leider nicht zurecht. Das $page Objekt ist ja ein multidimensional array und der 'position' Wert müsste geshuffled werden oder? Aber wie komme ich da ran oder habe ich einen Denkfehler?

Code: Select all

sortby = 'position',
order = rand();
ist ständig mein Gedanke aber wohin damit?


Vielen Dank nochmals für die Hilfe.
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:

gerald wrote: Thu Mar 25, 2021 5:40 pm Mit dem shuffle Befehl komme ich leider nicht zurecht. Das $page Objekt ist ja ein multidimensional array und der 'position' Wert müsste geshuffled werden oder? Aber wie komme ich da ran oder habe ich einen Denkfehler?

Code: Select all

sortby = 'position',
order = rand();
ist ständig mein Gedanke aber wohin damit?
Ich werde mir das über das Wochenende oder Anfang nächster Woche genauer ansehen. Vorher komme ich leider kaum dazu.
Clickwork - Websites mit Bludit | Planet Bludit - Tipps und Snippets
gerald
Jr. Bludit
Posts: 8
Joined: Wed Mar 24, 2021 5:29 pm

Super! Keine Eile - Vielen Dank für deine Bemühungen schon mal.

Eventuell ist es auch eine praktikable Lösung im admin backend unter den Settings eine weitere Option für die Sortierreihenfolge einzubauen? Neben "nach Datum" und "Position" dann noch "zufällig".
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:

Das müsste gehen:

Code: Select all

shuffle($content);
foreach ($content as $page) {
Clickwork - Websites mit Bludit | Planet Bludit - Tipps und Snippets
gerald
Jr. Bludit
Posts: 8
Joined: Wed Mar 24, 2021 5:29 pm

perfekt! Das funktioniert genauso wie ich mir das vorgestellt hatte. Vielen Dank für die Hilfe.
Post Reply