[phpBB Debug] PHP Warning: in file [ROOT]/ext/tas2580/seourls/event/listener.php on line 213: Undefined array key "FORUM_NAME"
REDAXO Forum • Artikel aus mehreren Kategorien nach Datum
Seite 1 von 1

Artikel aus mehreren Kategorien nach Datum

Verfasst: 17. Jun 2016, 11:27
von mmh
Hallo zusammen,
an einigen Modulen die Inhalte aus Metadaten nach bestimmten Datumsgrenzen ausgeben sollen.
Genau geht es um einen Fotogalerie. Jeden Monat wird ein neues Bild veröffentlicht.

Das Modul "Hero" soll immer das neueste Bild nebst Titel zeigen.

Das Modul "Fotos aktuell" soll alle Fotos des aktuellen Jahres auflisten.

Das Modul "Fotos Archiv" soll die Fotos der letzten Jahre (es existieren schon Daten von 10 Jahren) in einem jquery Accordion nach Jahren sortiert anzeigen.

Wenn ich jetzt alle Artikel in eine Kateogrie lege, bin ich aktuell schon bei 120 Artikeln, ich weiß gar nicht, ob Redaxo das kann und falls ja, finde ich es trotzdem ziemlich unübersichtlich. Außerdem wüsste ich nicht wie ich "Fotos Archiv" automatisieren soll.

Für das "Foto Archiv" habe ich mir überlegt, Alle Artikel in Kategorien nach Jahren anzulegen. Das Modul liest dann die Kategorien aus, legt ein Tab für jede Kategorie (2015, 2014, 2013, etc.) an und platziert dort die Artikel. Jetzt weiß ich aber nicht mehr, wie ich an den jeweils neuesten Eintrag aller Kateogiren für das Modul Hero komme, und auch nicht, wie ich die Bilder des Aktuellen Jahres in "Fotos aktuell" bekomme ???

Ich hoffe ich habe mich verständlich ausgedrückt?

Danke und Grüße
Marco

Re: Artikel aus mehreren Kategorien nach Datum

Verfasst: 17. Jun 2016, 14:01
von mmh
Manchmal funktioniert es auch mit TAE :twisted:

Hiermit lese ich alle Artikel der Hauptkategorie (inklusive aller Unterkategorien) aus, drehe die Reihenfolge um und gebe die 3 neusten Artikle für das Modul Hero aus:

Code: Alles auswählen

    <?php
	// Elternkategorie definieren
	$category = rex_category::get(8);
	// Kinder auswählen
	$category_childs = $category->getChildren();
	// Array Reihenfolge umsortieren
	$category_childs_reverse = array_reverse($category_childs);	    
	// Zähler reset
	$i = 0;
	// Kategrie Array auslesen
	foreach ($category_childs_reverse as $category_child) {
		// Artikel auswählen
		$articles = $category_child->getArticles();
		// Array Reihenfolge umsortieren
		$articles_reverse =array_reverse($articles);
		// Artikel Array auslesen
		foreach ($articles_reverse as $article) {
			// Artikelname definieren
			$article_name = $article->getValue('name');
			// Schleife nur 3mal durchlaufen
			if ($i<3) {
			// Artikelname ausgeben				
			echo $article_name.'<br>';
			}
			// Zähler +1
			$i++;
		}
	}
	?>

Hiermit gebe ich alle Artikel der neusten Unterkategorie in umgekehrter Reihenfolge für das Modul "Fotos aktuell" aus

Code: Alles auswählen

    <?php
	// Elternkategorie definieren
	$category = rex_category::get(8);
	// Kinder auswählen
	$category_childs = $category->getChildren();
	// Array Reihenfolge umsortieren
	$category_childs_reverse = array_reverse($category_childs);	    
	// Zähler reset
	$i = 0;
	// Kategrie Array auslesen
	foreach ($category_childs_reverse as $category_child) {
		// Schleife nur einmal durchlaufen
		if ($i<1) {
			//Kateogirename auslesen				
			$cat_name = $category_child->getName();
			//Kateogirename ausgeben
			echo '<br>'.$cat_name.'<br>';
			//Artikel auswählen
			$articles = $category_child->getArticles();		
			// Artikel Array auslesen
			foreach ($articles as $article) {
				//Artikelname definieren
				$article_name = $article->getValue('name');
				//Artikelname ausgeben
				echo $article_name.'<br>';
			}
		}
		//Zähler +1
		$i++;
	}
	?>

Und hiermit gebe ich alle Unterkategorien (außer der ersten) in umgekehrter Reihenfolge aus

Code: Alles auswählen

    <?php
	// Elternkategorie definieren
	$category = rex_category::get(8);
	// Kinder auswählen
	$category_childs = $category->getChildren();
	// Array Reihenfolge umsortieren
	$category_childs_reverse = array_reverse($category_childs);
	// Zähler reset
	$i = 0;
	// Kategrie Array auslesen
	foreach ($category_childs_reverse as $category_child) {
		// Schleife nur einmal durchlaufen
		if ($i>0) {
			//Kateogirename auslesen				
			$cat_name = $category_child->getName();
			//Kateogirename ausgeben
			echo '<br>'.$cat_name.'<br>';
			//Artikel auswählen
			$articles = $category_child->getArticles();		
			// Artikel Array auslesen
			foreach ($articles as $article) {
				//Artikelname definieren
				$article_name = $article->getValue('name');
				//Artikelname ausgeben
				echo $article_name.'<br>';
			}
		}
		//Zähler +1
		$i++;
	}
	?>
:?:
Frage: Ist da irgendwo ein grober Schnitzer drin der mir im Moment nicht auffällt?
Geht es an irgendeiner Stelle eleganter (gerade was das sortieren und Zählen angeht)?
Und vor allem: Warum bekomme ich mit $category->getChildren(); alle Artikel aller Child-Kategorien?
Ich meine, es kommt mir ja zu Gute, aber ich dachte es werden nur die Child-Kategorien und nicht deren Artikel ausgegeben. Nicht dass das ein Bug ist und mein Modul nur bis zum nächsten Update funktioniert ;-)