[phpBB Debug] PHP Warning: in file [ROOT]/ext/tas2580/seourls/event/listener.php on line 213: Undefined array key "FORUM_NAME"
Absteigende Artikelliste einer Kategorie ... - 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/
missmissr
Beiträge: 175
Registriert: 9. Mär 2008, 18:36

Absteigende Artikelliste einer Kategorie ...

13. Aug 2015, 17:57

Hi,

ich hab mir aus dem Minibeispiel ein Modul gemacht, das mir aus einer bestimmten Kategorie (REX_VALUE[1] aus einem Eingabeformular) eine Liste aller aktiven Artikel darstellt.

Code: Alles auswählen

<?php

// Modulausgabe

$cat = OOCategory::getCategoryById(REX_VALUE[1]); // hier die ID der Kategorie aus dem Eingabemodul

$articles = $cat->getArticles( true); // alle Artikel der Kategorie auslesen, die Online sind

if ( is_array( $articles) && count( $articles) > 0) {
  
  foreach ( $articles as $article) {
    // Den aktuellen Artikel nicht verlinken
    if ( $article->getId() == REX_ARTICLE_ID) continue;

    // Startartikel ausblenden blendet den Startartikel selbst in der Liste aus
    if ( $article->isStartPage()) continue;

    // Linkliste
    echo '<li><a href="index.php?article_id='.$article->getID().'">'.$article->getName().'</a></li>';
   
  }
} 

?>

Die Liste ist aufsteigend, das heißt, der älteste ist der erste und bleibt oben stehen. Könnte ich bitte einen Tipp haben, wie ich das Ausgabemodul so machen kann, dass es absteigend darstellt, also den neuesten ganz oben?

Man könnte das über die Priorität in der Struktur machen, aber ich will, dass mein kleines Modul das selbst macht, damit der Redakteur nicht bei den Prioritäten rumklicken muss.

Bitte, Danke für Hilfe.


missmissr
Beiträge: 175
Registriert: 9. Mär 2008, 18:36

Re: Absteigende Artikelliste einer Kategorie ...

14. Aug 2015, 13:38

Hi Daniel,

Danke, klar geht das mit php aber ich dachte, dass es was redaxospeziellen Code bzw. Variablen gibt.

Danke.

Benutzeravatar
runstop64
Beiträge: 369
Registriert: 23. Okt 2012, 21:34
Wohnort: Hamburg
Kontaktdaten: Website Facebook Twitter

Re: Absteigende Artikelliste einer Kategorie ...

14. Aug 2015, 15:37

Das OOFramework sortiert die Daten immer nach Prio. Für eine eigene Sortierung musst Du selbst Hand anlegen. Evtl. hilft es, auch noch mal einen Blick auf die Modulsammlung zu werfen, da gibt's ja auch welche mit einer ganzen Menge an Einstellmöglichkeiten - z.B. das hier: http://www.redaxo.org/de/download/modul ... =&cat_id=2
Viele Grüße,
Daniel


studio-ahoi.de | Referenzen | Friends Of REDAXO

missmissr
Beiträge: 175
Registriert: 9. Mär 2008, 18:36

Re: Absteigende Artikelliste einer Kategorie ...

17. Aug 2015, 17:23

Hi Daniel,

ich habe das jetzt mal so gemacht. Ich weiß nicht, wie geschickt das ist, aber das Modul macht, was ich will und sortiert die Artikel einer von mir gewählten Kategorie 12 nach ID absteigend.

Code: Alles auswählen

<?php

// SORTIERT ARTIKEL EINER KATEGORIE NACH ID IN ABSTEIGENDER REIHENFOLGE
// Basis: http://www.redaxo.org/de/download/module/?modul_id=15&searchtxt=artikelliste&cat_id=-1
// DIESES MODUL LÄSST SICH KEIN ZWEITES MAL AUF EINER SEITE EINFÜGEN IST BEIM ORIGINAL ABER AUCH SCHON SO

function sortArtName( $articleA, $articleB) {
   $nameA = $articleA->getId(); // getName() sortiert alpahbetisch
   $nameB = $articleB->getId(); // getName() sortiert alpahbetisch

   if ( $nameA == $nameB) {
      return 0;
   }

   $arr = array( $nameA, $nameB);
   sort( $arr, SORT_STRING);

   return $arr[0] == $nameA ? 1 : -1; // absteigend 1 : -1, aufsteigend -1 : 1
}


$cat = OOCategory::getCategoryById(12); //REX_CATEGORY_ID für die aktuelle Kategorie
$articles = $cat->getArticles( true);

// SORTIEREN

usort( $articles, "sortArtName");

if (is_array($articles) && count( $articles) > 0) {
  foreach ($articles as $article) {
	  
    // AKTUELLEN ARTIKEL NICHT ANZEIGEN
    if( $article->getId() == REX_ARTICLE_ID) continue;
    
    // KEINEN STARTARTIKEL ANZEIGEN
    // if ($article->isStartPage()) continue; 
    
    // AUSGEBEN
    echo '<li><a href="'.$article->getUrl().'">'.$article->getName().'</a></li>';

  }

}

?>
Danke für die Anregungen, ich habe alle Artikellistenmodule gesichtet, viele davon gehen in der aktuellen Redaxoversion nicht mehr.

Benutzeravatar
runstop64
Beiträge: 369
Registriert: 23. Okt 2012, 21:34
Wohnort: Hamburg
Kontaktdaten: Website Facebook Twitter

Re: Absteigende Artikelliste einer Kategorie ...

17. Aug 2015, 18:33

Hi missmissr,

wenn Du die Funktionsdefinition in ein

Code: Alles auswählen

if (!function_exists('sortArtName')) {
....
}
packst, wird die Definition bei Folgeaufrufen übersprungen und Du kannst das Modul auch mehrfach einbinden.
Viele Grüße,
Daniel


studio-ahoi.de | Referenzen | Friends Of REDAXO

missmissr
Beiträge: 175
Registriert: 9. Mär 2008, 18:36

Re: Absteigende Artikelliste einer Kategorie ...

18. Aug 2015, 09:21

Hi Daniel, Danke, cool.

Zurück zu „Allgemeines [R4]“