[phpBB Debug] PHP Warning: in file [ROOT]/ext/tas2580/seourls/event/listener.php on line 213: Undefined array key "FORUM_NAME"
Infinite Artikel Navigation (Blätternavigation) - 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/
stefanendress
Beiträge: 1
Registriert: 30. Mai 2015, 11:53

Infinite Artikel Navigation (Blätternavigation)

30. Mai 2015, 12:12

Hallo Leute,

ich würde gerne eine Artikelnavigation bauen, mit der man endlos durch die artikel der aktuellen Kategorie blättern kann und den Startartikel überspringt. Ich versuche mal darzustellen wie es im Moment funktioniert und wie es sein sollte.

Ist zustand:

First article
previous article (startarticle) – next article

Article in between
previous articlenext article

Last article
nothing (gibt gar nichts aus)

_____

So sollte es sein:

First project
previous article (last project) – next article

Article in between
previous articlenext article

Last Article
previous articlenext article (first project)


Habe schon einiges ausprobiert, komm aber leider nicht mehr weiter und würde mich super freuen wenn jemand eine Idee hätte. Das Ausgangsmodul habe ich hier gefunden http://usysto.net/blog/redaxo_artikel_blaettern.php, jedoch ein wenig umgebaut und aufgeräumt.

Danke,
Stefan

Code: Alles auswählen

<?php

	$categoryId = $this->getValue('category_id');
	$articleId 	= $this->getValue('article_id');

	// all articles from current category
	$articles = OOArticle::getArticlesOfCategory($categoryId, true);

	// reverse articles
	$reversedArticles = array_reverse($articles);

	// vars
	$number 	= 0;
	$curNumber 	= 0;
	$arrArt 	= array();
	$output 	= '';

	// all online articles from this category
	foreach ($reversedArticles as $article) { 
		if (is_object($article)) {

			// count
			$number++; 

			// current article
			if ($article->getId() == $articleId) {
				$curNumber 		= $number;
				$prev_number 	= $number + 1;
				$next_number 	= $number - 1;
			}

			// new array with all articles
			$arrArt[$number] = $article; 
		}
	}

	$nextName 	= $arrArt[$next_number]->getName();
	$prevName 	= $arrArt[$prev_number]->getName();

	$nextUrl 	= rex_getUrl($arrArt[$next_number]->getId());
	$prevUrl 	= rex_getUrl($arrArt[$prev_number]->getId());

	// if next article exists
	if (is_object($arrArt[$next_number])) { 
		$nextart = ' <a href="'.$nextUrl.'">'.$nextName.'</a> ';
	}

	// if prev article exists
	if (is_object($arrArt[$prev_number])) { 
		$prevart = ' <a href="'.$prevUrl.'">'.$prevName.'</a> ';
	}

	// if another article exists
	if (isset($nextart) || isset($prevart)) { 
		$output = ''.$prevart.' '.$nextart.'';
	}

	echo $output;

?>

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

Re: Infinite Artikel Navigation (Blätternavigation)

5. Aug 2015, 10:27

Ungetestet, aber sollte funktionieren.

Code: Alles auswählen

    <?php

       $categoryId = $this->getValue('category_id');
       $articleId    = $this->getValue('article_id');

       // all articles from current category
       $articles = OOArticle::getArticlesOfCategory($categoryId, true);

       //Startartikel entfernen
       unset($articles[0]);

      // reverse articles
      $reversedArticles = array_reverse($articles);

 
      //letzten Index des Arrays ermitteln
      $high_index = count($reversedArticles) - 1;

      // vars
       $number    = 0;
       $curNumber    = 0;
       $arrArt    = array();
       $output    = '';

       // all online articles from this category
       foreach ($reversedArticles as $article) {
          if (is_object($article)) {

             // count
             $number++;

             // current article
             if ($article->getId() == $articleId) {
                $curNumber       = $number;
                $prev_number    = $number + 1;
                if ($prev_number > $high_index) {
                   $prev_number = 0;
                }
                $next_number    = $number - 1;
                if ($next_number < 0) {
                   $prev_number = $high_index;
                }
            }

             // new array with all articles
             $arrArt[$number] = $article;
          }
       }

       $nextName    = $arrArt[$next_number]->getName();
       $prevName    = $arrArt[$prev_number]->getName();

       $nextUrl    = rex_getUrl($arrArt[$next_number]->getId());
       $prevUrl    = rex_getUrl($arrArt[$prev_number]->getId());

       // if next article exists
       if (is_object($arrArt[$next_number])) {
          $nextart = ' <a href="'.$nextUrl.'">'.$nextName.'</a> ';
       }

       // if prev article exists
       if (is_object($arrArt[$prev_number])) {
          $prevart = ' <a href="'.$prevUrl.'">'.$prevName.'</a> ';
       }

       // if another article exists
       if (isset($nextart) || isset($prevart)) {
          $output = ''.$prevart.' '.$nextart.'';
       }

       echo $output;

    ?>
LG
Gunter
read the manual first

Benutzeravatar
alexplus
Beiträge: 212
Registriert: 13. Feb 2007, 15:03
Wohnort: Heilbronn
Kontaktdaten: Website

Re: Infinite Artikel Navigation (Blätternavigation)

8. Sep 2016, 10:28

Funktionierte nicht.

Getestet und funktioniert:

Code: Alles auswählen

<?php

$categoryId = $this->getValue('category_id');
$articleId    = $this->getValue('article_id');

// all articles from current category
$articles = OOArticle::getArticlesOfCategory($categoryId, true);

// reverse articles
$reversedArticles = array_reverse($articles);

// vars
$number    = 0;
$curNumber    = 0;
$arrArt    = array();
$output    = '';

// all online articles from this category
foreach ($reversedArticles as $article) {

    if (is_object($article)) {

        // count
        $number++; 
        $arrArt[$number] = $article; 

        // current article
        if ($article->getId() == $articleId) {
            $curNumber       = $number;
            $prev_number    = $number + 1;
            $next_number    = $number - 1;
        }
    }
}

if(is_object($arrArt[$next_number])) {
    $nextName    = $arrArt[$next_number]->getName();
    $nextUrl    = rex_getUrl($arrArt[$next_number]->getId());
    $output .= ' <a href="'.$nextUrl.'">'.$nextName.'</a> ';


}
   if(is_object($arrArt[$prev_number])) {
       $prevName    = $arrArt[$prev_number]->getName();
       $prevUrl    = rex_getUrl($arrArt[$prev_number]->getId());
       $output .= ' <a href="'.$prevUrl.'">'.$prevName.'</a> ';
   }

      echo $output;

?>

Zurück zu „Allgemeines [R4]“