Hallo, lieber Forum Benutzer. Wir haben in letzter Zeit festgestellt, dass die Kommunikation via https://slack.com/ viel schneller und zielführender ist als ein Beitrag im Forum. Aufgrund der neuen Möglichkeiten der Kommunikation ist das Forum ein wenig eingeschlafen und weniger Nutzer benutzen das Forum aktiv (trotzdem lohnt es sich evtl. hier nach Lösungen zu suchen oder seine Frage zu stellen).

Wir empfehlen bei Fragen/Problemen aktuell die Frage (zusätzlich) im Slack zu stellen. Dort sind viele kompetente REDAXO Benutzer aktiv und beantworten gerne (Anfänger)Fragen.

Selbst einladen kannst Du dich hier: http://redaxo.org/slack/

Slack wird von uns sehr intensiv und meistens "rund um die Uhr" benutzt :-)
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: 204
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 „Module/Aktionen [R4]“