[phpBB Debug] PHP Warning: in file [ROOT]/ext/tas2580/seourls/event/listener.php on line 213: Undefined array key "FORUM_NAME"
REDAXO Forum • < > Navigation Artikel Online erweitern
Seite 1 von 1

< > Navigation Artikel Online erweitern

Verfasst: 24. Feb 2012, 21:24
von a.albrecht
Hallo Redaxos,

ich habe folgende < > Navigation, um von einem Startartikel zum nächsten zu gelangen.
Diese Navigation beinhaltet jedoch auch Artikel, die auf offline stehen.

Wie kann ich Offline-Artikel von der Ausgabe ausschließen?

Code: Alles auswählen

    <?php

    ## eigene ID
    $cat = OOCategory::getCategoryById($this->getValue('category_id'));

    ## current artikel id
    $currentarticleID = $cat->getId();
    $currentarticle = OOArticle::getArticleById($currentarticleID);

    ## eltern ID & Clang
    $catParent = $cat->getParent();
    $catParentId = $catParent->getId();
    $catParentClang = $catParent->getClang();

    ## IDs der Kategorien
    $cat = OOCategory::getCategoryById($catParentId);
    $kat = $cat->getChildren();

    ## ID uebergabe an katIds
    foreach ($kat as $kats) {
       $katIds[] = $kats->getId();
    }

    ## uebergabe der StartArtikel der katIds
$article = array();
    foreach ($katIds as $katArticles) {
      $article[] = OOArticle::getArticleById($katArticles);

    }

    ## ab hier ist es das Modul von Artikel blaettern
    if (is_array($article))
    {
       ## artikelreihenfolge in eine liste laden
       foreach ($article as $var)
       {
          $articlestack[] = $var->getId();
       }
       ## herausfinden, welcher artikel der vorgaenger-artikel ist
       $i = 0;
       $catcount = count($articlestack);
       foreach ($articlestack as $var)
       {
          if($var == $currentarticleID)
          {
             if($i+1 < $catcount )
             {
                $nextID = $articlestack[$i+1];
                $successor = '<a href="'.rex_getUrl($nextID).'">></a>';
             }
             if($i-1 > -1)
             {
                $prevID = $articlestack[$i-1];
                $predecessor = '<a href="'.rex_getUrl($prevID).'"><</a>';
             }
          }
          $i++;
       }
       echo $predecessor . " " . $successor;

    }
    ?>

Re: < > Navigation Artikel Online erweitern

Verfasst: 25. Feb 2012, 12:54
von Angie
Hi,

vor der Ausgabe eine online-Abfrage einbauen:

Code: Alles auswählen

foreach (....) {
if ($...->isOnline()) {
Ausgabe
}
}
Greetz,
Angie

Re: < > Navigation Artikel Online erweitern

Verfasst: 25. Feb 2012, 16:42
von a.albrecht
Vielen Dank, sprich:

Code: Alles auswählen

foreach ($articlestack as $var)
       {

if ($article->isOnline()) {          

if($var == $currentarticleID)
          {
             if($i+1 < $catcount )
             {
                $nextID = $articlestack[$i+1];
                $successor = '<a href="'.rex_getUrl($nextID).'">></a>';
             }
             if($i-1 > -1)
             {
                $prevID = $articlestack[$i-1];
                $predecessor = '<a href="'.rex_getUrl($prevID).'"><</a>';
             }
          }
          $i++; }
       }

Re: < > Navigation Artikel Online erweitern

Verfasst: 11. Okt 2012, 07:31
von smithi
hi,
ich wollte zum einen fragen ob ich deinen code benutzten darf und falls ich ihn benutzten darf wo meiner Fehler liegt.

Code: Alles auswählen

<?php
	## eigene ID
    $cat = OOCategory::getCategoryById($this->getValue('category_id'));

    ## current artikel id
    $currentarticleID = $cat->getId();
    $currentarticle = OOArticle::getArticleById($currentarticleID);

    ## eltern ID & Clang
    $catParent = $cat->getParent();
    $catParentId = $catParent->getId();
    $catParentClang = $catParent->getClang();

    ## IDs der Kategorien
    $cat = OOCategory::getCategoryById($catParentId);
    $kat = $cat->getChildren();

    ## ID uebergabe an katIds
    foreach ($kat as $kats) {
       $katIds[] = $kats->getId();
    }

    ## uebergabe der StartArtikel der katIds
	$article = array();
    foreach ($katIds as $katArticles) {
      $article[] = OOArticle::getArticleById($katArticles);
    }

    ## ab hier ist es das Modul von Artikel blaettern
    if (is_array($article))
    {
       ## artikelreihenfolge in eine liste laden
       foreach ($article as $var)
       {
          $articlestack[] = $var->getId();
       }
       ## herausfinden, welcher artikel der vorgaenger-artikel ist
       $i = 0;
       $catcount = count($articlestack);
       foreach ($articlestack as $var)
       {

			if ($article->isOnline()) 
			{
				if($var == $currentarticleID)
				{
					if($i+1 < $catcount )
					{
						$nextID = $articlestack[$i+1];
						$weiter = '<a href="'.rex_getUrl($nextID).'">></a>';
					}
					if($i-1 > -1)
					{
						$prevID = $articlestack[$i-1];
						$zurueck = '<a href="'.rex_getUrl($prevID).'"><</a>';
					}
				}
				$i++; 
			}
		}
    }
    ?>
Habe den Script als eigenes Template und includiere das in die Templates in denen ich es brauche.
Ausgabe ist bei mir ganz normal "echo $weiter" etc..

Da passiert bei mir leider nichts.

hoffe das ihr mir helfen könnt.

danke im vorraus