[phpBB Debug] PHP Warning: in file [ROOT]/ext/tas2580/seourls/event/listener.php on line 213: Undefined array key "FORUM_NAME"
metainfo bilder aller kategorien sortiert ausgeben - REDAXO Forum
Hallo,

Wir haben in letzter Zeit festgestellt, dass die Kommunikation via Slack viel schneller und zielführender ist als ein Beitrag im Forum. Aufgrund der neuen und besseren Möglichkeiten der Kommunikation haben wir uns entschlossen das Forum nur noch als Archiv zur Verfügung zu stellen. Somit bleibt es weiterhin möglich hier nach Lösungen zu suchen. Neue Beiträge können nicht mehr erstellt werden.

Wir empfehlen, für deine Fragen/Probleme Slack zu nutzen. Dort sind viele kompetente Benutzer aktiv und beantworten jegliche Fragen, gerne auch von REDAXO-Anfängern! Slack wird von uns sehr intensiv und meistens "rund um die Uhr" benutzt :-)
Selbst einladen kannst Du dich hier: https://redaxo.org/slack/
fruchtfliege
Beiträge: 34
Registriert: 25. Jan 2012, 05:27

metainfo bilder aller kategorien sortiert ausgeben

25. Apr 2012, 04:31

hallo zusammen! dank euch habe ich mir ein modul zusammenflicken können, das alle artikelkategorien ausliest und dann jeweils per for-schleife ein bild aus den metainfos in einer slideshow ausgibt.

die metainfo bilder werden bei meiner methode jeweils gruppenweise ausgegeben, also eine kategorie nach der anderen (logisch). mein ziel ist es aber erst alle bilder zu "sammeln" und diese dann nach dem erstellungsdatum des artikels oder des upload-datums des bildes selbst auszugeben.

es soll in der slideshow also immer das metainfo bild des neuesten artikels / uploads als erstes angezeigt werden. hier der code:

Code: Alles auswählen

<?php
$cat = OOCategory::getCategoryById($this->getValue(category_id));
$cats = $cat->getRootCategories();
$rootcatSize = sizeof($cat->getRootCategories());
echo '<div class="jMyCarousel"><ul>';
if ($rootcatSize != "0"){
if (is_array($cats)) {
	foreach ($cats as $cat) {
	$catId			= $cat->getId();
	$catName		= $cat->getName();
	
// START Unterkategorien aufzählen

$cats = $cat->getChildren();
$catSize = sizeof($cat->getChildren());
if ($catSize != "0"){
if (is_array($cats)) {
	foreach ($cats as $cat) {

	$catId			= $cat->getId();
	$catName		= $cat->getName();
	
// START Unterartikel aufzählen

$articles = $cat->getArticles();

    foreach($articles as $article) {
	$picture = $article->getValue('art_file');
	$name = $article->getValue('name');
	if ($picture != '') {
	echo '<li><a href="'.$article->getUrl().'"><img src="'.$REX['HTDOCS_PATH'].'index.php?rex_img_type=slideshow&rex_img_file='.$picture.'" alt="'.$name.'" title="" /></a></li>'; 
    }}
// ENDE der Unterartikel
}}
}
// ENDE der Unterkategorien
}}
}
echo '</ul></div>';
?>
wie ihr seht, habe ich gerade mal php basics. deshalb bitte ich euch nochmal um codeschnipsel die mir weiter helfen könnten! versuche, andere module für meine zwecke umzubauen scheiterten kläglich. danke im voraus!

fruchtfliege
Beiträge: 34
Registriert: 25. Jan 2012, 05:27

Re: metainfo bilder aller kategorien sortiert ausgeben

7. Mai 2012, 06:22

hat denn wirklich niemand eine idee wie ich das umsetzen kann? ich komme einfach nicht weiter :(

Benutzeravatar
Cheffchen
Beiträge: 1809
Registriert: 3. Mär 2009, 13:51
Wohnort: Berlin
Kontaktdaten: Website

Re: metainfo bilder aller kategorien sortiert ausgeben

7. Mai 2012, 11:01

HAllo,

doch schon :O).

Also dein erstes Problem ist das nicht EVA nutzt Eingabe-Verarbeitung-Ausgabe (ich muss mich auch dazu zwingen). Du hast in der Verarbeitung ausgabe und auch davor das macht änderungen nur unnötig schwerer.

Ich geh mal davon aus das dein code bis jetzt funktioniert und habe da eins zwei drei ... sachen geändert(ganz unten hast ein Link wo deins mit dem vergleichen kannst, sollst ja wenigsten wissen was gemacht wurde):
natürlich ungetestet

Code: Alles auswählen

<?php
# variable reseten
$bilder = array();
$gallerie="";
$cat = OOCategory::getCategoryById($this->getValue(category_id));
$cats = $cat->getRootCategories();
$rootcatSize = sizeof($cat->getRootCategories());

if ($rootcatSize != "0"){
if (is_array($cats)) {
   foreach ($cats as $cat) {
   $catId         = $cat->getId();
   $catName      = $cat->getName();

// START Unterkategorien aufzählen

$cats = $cat->getChildren();
$catSize = sizeof($cat->getChildren());
if ($catSize != "0"){
if (is_array($cats)) {
   foreach ($cats as $cat) {

   $catId         = $cat->getId();
   $catName      = $cat->getName();

// START Unterartikel aufzählen

$articles = $cat->getArticles();

    foreach($articles as $article) {
   $picture = $article->getValue('art_file');
   $name = $article->getValue('name');
   $url=$article->getUrl();
   if ($picture != '') {
   	# Daten auslesen aus Medienpool und in array packen inkl URL
	if ($file = OOMedia::getMediaByFileName($picture)) {
	$title = $file->getTitle();
	$update = $file->getUpdateDate();
	$bilder[]= array(datei =>"$picture", 'update' => "$update", name => "$name", url => "$url");
         }
    }}
// ENDE der Unterartikel
}}
}
// ENDE der Unterkategorien
}}
}

# array nach update ordnen
$sort_update = array();
foreach($bilder as $key => $array) {
  $sort_update[$key] = $array[update];}
array_multisort($sort_update, SORT_DESC, $bilder);

# li liste zusammenbauen
for($x=0;$x < count($bilder);$x++){
// der code der bilderausgabe
$gallerie .= '<li><a href="'.$bilder[$x][url].'"><img src="'.$REX['HTDOCS_PATH'].'index.php?rex_img_type=slideshow&rex_img_file='.$bilder[$x][datei].'" alt="'.$bilder[$x][name].'" title="" /></a></li>';
}

# ausgabe aller daten nur am ende
echo '<div class="jMyCarousel"><ul>';
echo $gallerie;
echo '</ul></div>';
?>
http://www.code.klassentreffen-seelow-9 ... tm?diff=55

Cheffchen

EDIT: fehler im code sind berichtigt
Zuletzt geändert von Cheffchen am 9. Mai 2012, 10:22, insgesamt 2-mal geändert.

fruchtfliege
Beiträge: 34
Registriert: 25. Jan 2012, 05:27

Re: metainfo bilder aller kategorien sortiert ausgeben

8. Mai 2012, 05:15

Genial Cheffchen! Du hast zwar 3 Flüchtigkeitsfehler eingebaut, aber das hält wenigstens mein Gehirn fit :mrgreen: Ich hatte allerdings nicht nachgedacht: Nach dem Upload-Datum zu sortieren ist suboptimal, da beim Austausch eines Bilder dieses in der Slideshow wieder an erste Stelle rutscht. Besser wäre eine Sortierung nach Artikel-ID, aber das ist meckern auf hohem Niveau! Zumal ich da vorher nicht überlegt habe... :oops: Ich denke das ich das basierend auf deinem Code einfach selber umschreiben kann.

Vielen Dank, auch für den Codevergleich. Mir fällt es in der Tat schwer EVA zu nutzen. Mir ist es das erste Mal bei einem Mailerscript aufgefallen und hat mich damals etwas abgeschreckt. Wird wohl noch was dauern bis ich mich daran gewöhnt habe! Bei Arrays habe ich aber auch einen riesen Nachholbedarf...

LG fruchtfliege

Benutzeravatar
Cheffchen
Beiträge: 1809
Registriert: 3. Mär 2009, 13:51
Wohnort: Berlin
Kontaktdaten: Website

Re: metainfo bilder aller kategorien sortiert ausgeben

8. Mai 2012, 09:23

Hallo,

das mit dem Sortieren kannst ja auch immer mixen, dann ist nichts bevorzugt und am anfang bzw. am ende

Code: Alles auswählen

shuffle($bilder);
Du hast zwar 3 Flüchtigkeitsfehler eingebaut
war nicht beabsichtigt aber schön das selber gefunden hast, was war falsch?

Das EVA ist etwas umständlich zum anfang aber spätestens bei der ersten größeren änderung wirst glücklich sein.

Cheffchen

fruchtfliege
Beiträge: 34
Registriert: 25. Jan 2012, 05:27

Re: metainfo bilder aller kategorien sortiert ausgeben

9. Mai 2012, 01:19

Code: Alles auswählen

url=$article->getUrl();
hier fehlt das $-Zeichen

Code: Alles auswählen

$bilder[]= array(datei =>"$picture", 'update' => "$update", name => "$name", url => "url");
in der Array Definition fehlt bei url auch das $-Zeichen

Code: Alles auswählen

$gallerie .= '<li><a href="'.$bilder[$x][url].'"><img src="'.$REX['HTDOCS_PATH'].'index.php?rex_img_type=slideshow&rex_img_file='.$bilder[$x][picture].'" alt="'.$bilder[$x][name].'" title="'.$bilder[$x][name].'" height="313" width="210" /></a></li>';
IMG source muss $bilder[$x][datei] lauten, damit ein Bild angezeigt wird.

Nochmal danke für deine Hilfe!

Zurück zu „Allgemeines [R4]“