[phpBB Debug] PHP Warning: in file [ROOT]/ext/tas2580/seourls/event/listener.php on line 213: Undefined array key "FORUM_NAME"
Blättern von Artikeln - 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/
engeltom
Beiträge: 84
Registriert: 8. Nov 2006, 18:42
Wohnort: Obermichelbach
Kontaktdaten: Website

Blättern von Artikeln

4. Apr 2007, 20:31

Hallo, ich weiß es gibt schon alle möglichen Beiträge zu dem Thema blättern von Artikeln.

Ich habe schon alle geposteten Module probiert, aber irgendwie klappt das bei mir net so, wie ich will.
Auch das Modul http://www.redaxo.de/165-Moduldetails.html?module_id=21 macht nicht das was ich will.

Okay, was will ich eigentlich?

Das beim Aufruf einer Category im Browser der Startartikel aufgerufen wird und ein Link „Weiter“ erscheint. Beim Aufruf des nächsten Artikels sollte dann ein Button „zurück“ angeboten werden. Gibt es einen weiteren Artikel, soll natürlich zusätzlich der Weiter-Button erscheinen.

Was hab ich gemacht?

* Das Modul von oben eingebunden
* Eine Category angelegt
* Im Startartikel ein bisschen Text eingefügt und einen weiteren Artikel
eingefügt (dieser ist auch online)
* Im Startartikel habe ich einen Block mit dem Blättern-Modul eingebunden

Was passiert tatsächlich?
Beim Aufruf der Category erscheint neben dem Text des Startartikels gleichzeitig der Text des anderen Artikels. Das will ich aber doch gar nicht. Der Text des anderen Artikels soll doch erst erscheinen, wenn ich auf weiter klicke. Jedoch erscheint kein Link „Weiter“.

Wäre super, wenn mir jemand helfen könnte...

Gruß,
engeltom

engeltom
Beiträge: 84
Registriert: 8. Nov 2006, 18:42
Wohnort: Obermichelbach
Kontaktdaten: Website

Lösung fast gefunden, aber kleiner Fehler vorhanden

5. Apr 2007, 22:19

Hallo,

hab freundlicherweise von Oliver eine Mail mit nem Code bekommen. Vielen Dank dafür.
Ich habe das Modul mit meinen bescheidenen Mitteln mal auf meine Bedürfnisse angepaßt. Jetzt wird mir im Frontend richtig das vor und zurück angezeigt (siehe http://www.square-concept.de/tic_cms/in ... icle_id=22).

Beim letzten Artikel kommt jedoch der Fehler:
Fatal error: Call to a member function on a non-object in C:\xampp\htdocs\tic_cms\redaxo\include\classes\class.article.inc.php(179) : eval()'d code on line 47

Im Backend bekomme ich beim Aufruf des Artikels im Editier-Modus ebenfalls einen Fehler: [ externes Bild ]

Ich vermute, irgendwas stimmt an meinem Modul noch nicht so ganz.
Darum poste ich hier mal den Code:

Code: Alles auswählen

<?php
$category = OOCategory::getCategoryById($this->getValue('category_id')); 
$articles = $category->getArticles(true); 
$prev_article = null; 
$aktuelleID = $this->getValue('article_id');
$is_startartikel = $this->getValue('startpage');


if (is_array($articles)) {
  for ($i = 0; $i < count($articles); $i++) { // Bis zum aktuellen Artikel durchgehen und den nächsten selektieren 
    if ($this->getValue('startpage') == 1) { // Speichern der ID des Startartikels (wird sp&auml;ter gebraucht)
      $id_startartikel = $this->getValue('article_id');
    }
    if ($is_startartikel != 1) { // ID des 2. Artikels eintragen (Nicht der Startartikel)
      if ($articles[$i]->getId() == $this->getValue('article_id')) {
        if (isset( $articles[$i-1])) {
          $prev_article = $articles[$i-1];
          break;
        }
      }
    }
  }
}

if ($is_startartikel != 1) {  // ID des 2. Artikels eintragen (Nicht der Startartikel) 
  $VorherigeArtID = $prev_article->getID();
  if ($VorherigeArtID != null) {
    echo "<a id='zurueck' href='index.php?article_id=".$VorherigeArtID."'>Zur&uuml;ck</a>&nbsp;&nbsp;";
  }
}

$next_article = null;

if (is_array($articles)) {
  $choose = false;
  foreach ($articles as $article) {
    if ($choose) {
      $next_article = $article;
      break;
    }
    // Bis zum aktuellen Artikel durchgehen und den nächsten selektieren
    if ($article->getId() == $this->getValue('article_id')) {
      $choose = true;
    }
  }
}
$NaechsterArtID = $next_article->getId();
//echo "<a id='uebersicht' href='index.php?article_id=2'>&Uuml;bersicht</a>";
if ($next_article !== null){
  if ($next_article->getId() != $id_startartikel) // ID des Startartikels 
  { echo "<a id='weiter' href='index.php?article_id=".$NaechsterArtID."'>Weiter</a>";
  }
} 
?>
Woran könnte das liegen?

Vielen Dank für Eure Hilfe...[/code]

zehbaeh
Beiträge: 556
Registriert: 17. Okt 2006, 11:52
Wohnort: Solingen

7. Apr 2007, 11:40

Oder so?:

Code: Alles auswählen

<?php

$locs = array('Zur&uuml;ck','Weiter');
$deli = '&nbsp;&nbsp|&nbsp;&nbsp;';
$prev = 0;
$next = 0;
$last = 0;

foreach(OOArticle::getArticlesOfCategory(REX_CATEGORY_ID,TRUE) as $a)
    if($a !== NULL) {
        $id = $a->getId();
        if($id == REX_ARTICLE_ID) $prev = $last;
        if($last == REX_ARTICLE_ID) { $next = $id; break; }
        $last = $id;
    }

if($prev != 0) 
  printf('<a id="zurueck" href="%s">%s</a>',rex_getUrl($prev),$locs[0]);
if($next != 0) {
  if($prev != 0) echo $deli;
  printf('<a id="weiter" href="%s">%s</a>',rex_getUrl($next),$locs[1]);  
}

unset($id,$a,$last,$next,$prev,$deli,$locs);
?>
EDIT: noch'n break eingefügt. An der Stelle kann die Schleife verlassen werden!)

engeltom
Beiträge: 84
Registriert: 8. Nov 2006, 18:42
Wohnort: Obermichelbach
Kontaktdaten: Website

Bin begeistert

9. Apr 2007, 18:49

Hi,

da werden ziemlich schnell die eigenen Grenzen klar!

Vielen Dank, funktioniert super!!!

decision
Beiträge: 80
Registriert: 13. Sep 2006, 13:53

29. Dez 2007, 14:57

Kann man den Code auch noch so umbauen das der Artikelname anstelle von zurück und Weiter angezeigt wird?
Mir fehlt das leider das Wissen dazu :oops:

engeltom
Beiträge: 84
Registriert: 8. Nov 2006, 18:42
Wohnort: Obermichelbach
Kontaktdaten: Website

30. Dez 2007, 12:34

Hallo Decision,

ja, das geht auch. Ich habe den Code mal für dich angepaßt:

Code: Alles auswählen

<?php 
$REX_CAT_ID = $this->getValue('category_id');
$REX_ARTIC_ID = $this->getValue('article_id'); 

$locs = array(); 
$deli = '&nbsp;&nbsp|&nbsp;&nbsp;'; 
$prev = 0; 
$next = 0; 
$last = 0; 

foreach(OOArticle::getArticlesOfCategory($REX_CAT_ID,TRUE) as $a) {
    if($a !== NULL) { 

        $id = $a->getId(); 
        $locs[$id] = $a->getName();

        if($id == $REX_ARTIC_ID) { $prev = $last; } 
        if($last == $REX_ARTIC_ID) { $next = $id; $locs[] = $a->getName(); break; } 
        $last = $id; 
    } 
}

if($prev != 0) 
  printf('<a id="zurueck" href="%s">%s</a>',rex_getUrl($prev),$locs[$prev]); 
if($next != 0) { 
  if($prev != 0) echo $deli; 
  printf('<a id="weiter" href="%s">%s</a>',rex_getUrl($next),$locs[$next]);  
} 

unset($id,$a,$last,$next,$prev,$deli,$locs); 
?> 
Ich hole mir also für jeden Artikel den Namen und schreibe den inkl. ID in das Array $locs. Und bei der Ausgabe hole ich mir dann einfach den Artikelnamen anhand der $prev bzw. $next.

Gruss,
Thomas

decision
Beiträge: 80
Registriert: 13. Sep 2006, 13:53

31. Dez 2007, 14:38

Klasse. Habe ich direkt eingebaut unf funktioniert einwandfrei. Könntest du auch in den Downloadbereich eintragen (Rex 4.0 gestestet)

Einen guten Rutsch

engeltom
Beiträge: 84
Registriert: 8. Nov 2006, 18:42
Wohnort: Obermichelbach
Kontaktdaten: Website

1. Jan 2008, 17:24

Danke für den Tipp, da hab ich jetzt doch tatsächlich mein erstes Modul eingestellt :-)

Habe den Code jetzt nochmal leicht geändert. Man kann jetzt auswählen, ob "vor <=> zurück" angezeigt werden soll oder der Artikelname.

Das Modul findet ihr hier:

http://www.redaxo.de/165-Moduldetails.h ... ule_id=321

decision
Beiträge: 80
Registriert: 13. Sep 2006, 13:53

2. Jan 2008, 16:48

Tja, so schnell kann es gehen :D

Zurück zu „Allgemeines [R3]“