[phpBB Debug] PHP Warning: in file [ROOT]/ext/tas2580/seourls/event/listener.php on line 213: Undefined array key "FORUM_NAME"
Sortierfunktionen mehrmals auf einer Seite einsetzen - 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/
Chriz
Beiträge: 47
Registriert: 24. Nov 2006, 17:22

Sortierfunktionen mehrmals auf einer Seite einsetzen

13. Nov 2010, 19:46

Hallo zusammen,

Ich habe die Erfahrung gemacht, dass man die Sortierfunktionen nur mehrmals auf einer Seite verwenden kann, wenn man verrschiedene Sortierarten verwendet.

Möchte man aber Beispielsweise eine Sidebar nach Prio und ebenfalls
einige Artikel in umgekehrter Prio Reihenfolge Teasern, kommt es zu dem Fehler: "usort invalid comparison function"

Ich habe gelesen, dass man dies mit der Vergabe einer Klasse lösen kann:

Code: Alles auswählen

usort($array, array("className", "sortChannels"));
Verstehe das ganze aber nicht so wirklich. Wie muss ich die folgende Sortierfunktion anpassen?

Code: Alles auswählen

if (!function_exists('sortArticlesByPrio')) 
{
  // Sortierfunktion
  // http://wiki3.redaxo.de?n=R3.Sortiermöglichkeiten
  function sortArticlesByPrio( $artA, $artB) {
    $prioA = $artA->getPriority();
    $prioB = $artB->getPriority();

    if ( $prioA == $prioB) {
      return 0;
    }
    return $prioA > $prioB ? 1 : -1;
  }
}

Liebe Grüße,
Chriz

gupi
Beiträge: 286
Registriert: 20. Nov 2008, 13:49
Wohnort: Elsdorf/Rheinland

18. Nov 2010, 13:54

Hallo Chriz,

ich hab mal etwas getestet
Ich habe die Erfahrung gemacht, dass man die Sortierfunktionen nur mehrmals auf einer Seite verwenden kann, wenn man verrschiedene Sortierarten verwendet.
Das kann ich nicht bestätigen

Code: Alles auswählen

<?php
$cat_id = 7;
$articles = OOArticle::getArticlesOfCategory($cat_id);
print "<pre>".print_r($articles,TRUE)."</pre>";

/*
//Alternative 1 - dabei bleibt das ursprünkliche Array unverändert
$dsc = $articles;
usort($dsc,"sortArticlesByPrioDSC");
print "<pre>".print_r($dsc,TRUE)."</pre>";

$asc = $dsc;
usort($asc,"sortArticlesByPrioASC");
print "<pre>".print_r($asc,TRUE)."</pre>";
*/

//Alternative 2 - dabei wird mit jedem "usort" Aufruf das ursprünkliche Array aktualisiert
usort($articles,"sortArticlesByPrioDSC");
print "<pre>".print_r($articles,TRUE)."</pre>";
usort($articles,"sortArticlesByPrioASC");
print "<pre>".print_r($articles,TRUE)."</pre>";

function sortArticlesByPrioASC( $artA, $artB) {
  $prioA = $artA->getPriority();
  $prioB = $artB->getPriority();

  if ( $prioA == $prioB) {
    return 0;
  }
  return $prioA > $prioB ? 1 : -1;
} 
function sortArticlesByPrioDSC( $artA, $artB) {
  $prioA = $artA->getPriority();
  $prioB = $artB->getPriority();

  if ( $prioA == $prioB) {
    return 0;
  }
  return $prioA < $prioB ? 1 : -1;
}
?> 
Klappt bei mir ohne Probleme.
Bitte beachte, dass "usort" aus einem assoziativen Array ein indiziertes Array macht. Schau Dir auch mal "uasort", "uksort" usw. an.


LG
Gunter
read the manual first

Zurück zu „Allgemeines [R4]“