[phpBB Debug] PHP Warning: in file [ROOT]/ext/tas2580/seourls/event/listener.php on line 213: Undefined array key "FORUM_NAME"
REDAXO Forum • artikelliste/ linkliste
Seite 1 von 2

artikelliste/ linkliste

Verfasst: 28. Jul 2005, 13:02
von Oliver.Kreischer
hallo,

gibt es ein modul welches mir die ersten 3 artikel eine kategorie zeigt (bis hierhin hab ich das schon) und dann aber ein paging erlaubt...

d.h. das unten ein "weiter" und "zurück" steht und auf den folgeseiten wieder 3 artikel (von mir aus auch nur die teaser) gezeigt werden.

das "weiter" und "zurück" darf natürlich nur auftauchen wenn es noch artikel gibt...

________

desweiteren suche ich noch eine art bookmarkliste die ich in einem artikel einbauen kann...

_______

wär toll wen ihr was habt.
gruß
oliver

Verfasst: 28. Jul 2005, 13:46
von Thomas.Blum
Hej,

Du hattest doch schon einmal so etwas in der Art gefragt

http://forum.redaxo.de/viewtopic.php?t= ... light=blog

würde das als Ansatz nehmen

Thomas

Verfasst: 28. Jul 2005, 13:50
von Oliver.Kreischer
ich weiß,
entschuldige mich auch dafür.
aber ich komme an dieser stelle wirklich nicht weiter...

habs jetzt hinbekommen das meine subnavi immer (richtig) gehighlitet wird auch wenn einzelen artikel der kategorie angezeigt werden...

aber das paging verstehe ich einfach nicht...

gruß
oliver

Verfasst: 28. Jul 2005, 14:02
von Markus.Staab
Hi,

Code: Alles auswählen

$start = !empty$_GET['start']) ? (int) $start : 0; // Startitem
$offset = 3; // 3 Items pro Seite

$cat = OOCategory::getCategoryById( $deineArtikelId);
$articles = $cat->getArticles( true);

$article_list = array_slice( $articles, $start, $offset);
$list_length = count( $article_list);

foreach ( $article_list as $ooarticle) {
  // hier mach mit deinem ooarticle was du willst :)
}

$prevStart = $start - $offset;
if ( $prevStart < 0) 
{
   $prevStart = 0;
}

$nextStart = $start + $offset;
if ( $nextStart > $list_length) 
{
   $nextStart = '';
}

$link_format = '<a href="index.php?article_id=%s&start=%s">%s</a>';

// Vorherige Seite Link
echo sprintf( $link_format, $this->getValue( 'article_id'), $prevStart, 'vorherige Seite');

// Nächste Seite
if ( $nextStart != '') {
echo sprintf( $link_format, $this->getValue( 'article_id'), $nextStart, 'n&auml;chste Seite');
}
ungetestet!

Es ist sehr zu empfehlen, die Seite zu Cachen...

Gruß,
Markus

Verfasst: 28. Jul 2005, 14:38
von Oliver.Kreischer
vielen dank für die antwort....
verstehe das dann doch nicht.

ich höre dann hier mal auf...
muß ich mir halt etwas anderes überlegen
(dachte nicht das es so eine ungewöhnliches anforderung ist)

gruß und danke
oliver

Verfasst: 28. Jul 2005, 14:47
von Markus.Staab
olien hat geschrieben:vielen dank für die antwort....
verstehe das dann doch nicht.
Hi,

wie ist dein Ansatz, den du vor meinem Post hattest?

Gruß,
Markus

Verfasst: 28. Jul 2005, 14:50
von Oliver.Kreischer
danke der nachfrage:

http://forum.redaxo.de/viewtopic.php?t= ... light=blog

so ware der (von goldfisch)

gruß
oliver

Verfasst: 28. Jul 2005, 14:52
von Markus.Staab
Hi,

kann man das auch online ansehen?

Wie du schreibst hast du einen Teil deiner Anforderungen schon selbst umgesetzt...?

Gruß,
Markus

Verfasst: 28. Jul 2005, 14:58
von Oliver.Kreischer
http://www.kreischer.de/index.php?article_id=197

hier funktioniert das leider gar nicht und hier

http://www.kreischer.de/index.php?article_id=177

etwas (allerdings lasse ich heir auch alle artikel anzeigen...)

kills:cut

Verfasst: 28. Jul 2005, 15:05
von Markus.Staab
Hi,

schick mir bitte per PM nen Zugang zum Redaxo.

Gruß,
Markus

Verfasst: 28. Jul 2005, 15:16
von Oliver.Kreischer
vielen dank für die hilfsbereitschaft!

Verfasst: 28. Jul 2005, 15:54
von Markus.Staab
Hi,

nach ein bisschen hin und her, war dies die Lösung:

Code: Alles auswählen

<?php
$start = !empty($_GET['start']) ? (int) $_GET['start'] : 0; // Startitem
$offset = 3; // 3 Items pro Seite

$cat = OOCategory::getCategoryById( REX_CATEGORY_ID);
$articles = $cat->getArticles( true);
$articles_length = count( $articles);

$article_list = array_slice( $articles, $start, $offset);

foreach ( $article_list as $ooarticle) {
  $artId = $ooarticle->getId();

  // Damit keine Endlosschleife passiert, den Artikel der die Pagination setzt überspringen
  if ( $artId == REX_ARTICLE_ID) {
     break;
  }
  $article = new article();
  $article->setArticleId( $artId);
  echo $article->getArticle();
}

$prevStart = $start - $offset;
if ( $prevStart < 0)
{
   $prevStart = '';
}

$nextStart = $start + $offset;
if ( $nextStart >= $articles_length)
{
   $nextStart = '';
}

$link_format = '<a href="index.php?article_id=REX_ARTICLE_ID&start=%s">%s</a>';

// Vorherige Seite Link
if ( $prevStart !== '') {
  echo sprintf( $link_format, $prevStart, 'vorherige Seite');
}

// Nächste Seite
if ( $nextStart !== '') {
  echo sprintf( $link_format, $nextStart, 'n&auml;chste Seite');
} 
?>
Dieses Modul sollte im Startartikel einer Kategorie eingebunden werden.

Es entsteht dadurch eine Vorwärts/Rückwärts Navigation um durch alle Artikel der Kategorie (Ausser der indem das Modul selbst ist) zu Blättern.


Gruß,
Markus

Verfasst: 28. Jul 2005, 18:29
von Oliver.Kreischer
ich bedanke mich hier nochmal herzlichst für die hilfe!

oliver

Verfasst: 1. Aug 2005, 18:43
von Markus.Staab
Halli Hallo,

ich hab grad mit olien noch ein wenig geplaudert und ergebniss war nun folgende Modifikation des obigen Moduls:

Code: Alles auswählen

<?php

if (!$REX[GG])
{
// Im Backend nichts machen
return;
}


$start = !empty($_GET['start']) ? (int) $_GET['start'] : 0; // Startitem
$offset = 3; // 3 Items pro Seite
$cats = array( 3, 1); // alle Kategorien die Du "indizieren" willst

$articles = array();

foreach ( $cats as $catId) {
  $cat = OOCategory::getCategoryById( $catId);
  
  // CatIds die nicht funktionieren aussortieren
  if( $cat === null) {
     continue;
  }
  $cat_articles = $cat->getArticles( true);

  foreach ( $cat_articles as $ooarticle) {
     // keine Startartikel anzeigen
    if ( $ooarticle->isStartPage()) {
       continue;
     }

     // Damit keine Endlosschleife passiert, den Artikel der die Pagination setzt überspringen
     if ( $ooarticle->getId() == REX_ARTICLE_ID) {
        continue;
     }
     $articles[] = $ooarticle;
  }
} 

$articles_length = count( $articles);

// Sortieren nach Erstellungsdatum
if ( $articles_length > 0) {

   usort( $articles, "sortArticlesByCreateDate");
}

$article_list = array_slice( $articles, $start, $offset);

foreach ( $article_list as $ooarticle) {
  $artId = $ooarticle->getId();

  $article = new article();
  $article->setArticleId( $artId);
  echo $article->getArticle();
}

$prevStart = $start - $offset;
if ( $prevStart < 0)
{
   $prevStart = '';
}

$nextStart = $start + $offset;
if ( $nextStart >= $articles_length)
{
   $nextStart = '';
}

$link_format = '<a href="index.php?article_id=REX_ARTICLE_ID&start=%s">%s</a>';

// Vorherige Seite Link
if ( $prevStart !== '') {
  echo sprintf( $link_format, $prevStart, 'vorherige Seite');
}

// Nächste Seite
if ( $nextStart !== '') {
  echo sprintf( $link_format, $nextStart, 'n&auml;chste Seite');
} 

// Sortierfunktion
function sortArticlesByCreateDate( $artA, $artB) {
   $yearA    = (int) substr( $artA->_erstelldatum, 0, 4);
   $monthA = (int) substr( $artA->_erstelldatum, 4, 2);
   $dayA     = (int) substr( $artA->_erstelldatum, 6, 2);

   $yearB    = (int) substr( $artB->_erstelldatum, 0, 4);
   $monthB = (int) substr( $artB->_erstelldatum, 4, 2);
   $dayB     = (int) substr( $artB->_erstelldatum, 6, 2);
   
   $createA = mktime( 0, 0, 0, $monthA, $dayA, $yearA);
   $createB = mktime( 0, 0, 0, $monthB, $dayB, $yearB);

   if ( $createA == $createB) {
      return 0;
   }

   return $createA > $createB ? -1 : 1;
}
?>
- Alle Artikel werden nach erstellungsdatum sortiert ausgegeben (neuste immer oben)
- Es werden keine Startartikel ausgegeben
- per "$cats = array( 3, 1); // alle Kategorien die Du "indizieren" willst" kann man konfigurieren welche Kategorien alle einbezogen werden sollen

Das ganze im Einsatz seht Ihr auf
http://kreischer.de/

Gruß,
Markus

!

Verfasst: 1. Aug 2005, 23:09
von Oliver.Kreischer
und wieder danke!

oliver

Verfasst: 22. Mär 2006, 11:03
von Niki
Hallo,

was mache ich falsch, wenn nicht die Links zu den einzelnen Artikeln angezeigt werden, sondern die gesamten Artikel untereinander und auch ohne "Zurück" und "Weiter"?

http://www.schuhbecks-check-inn.de/Reda ... icle_id=85

Gruß,
Niki

Verfasst: 22. Mär 2006, 22:03
von Oliver.Kreischer
hi niki,

ich hab die frage jetzt 4 mal gelesen und verstehe sie leider nicht.
könntest du das evtl. mal anders formulieren?

gruß
oliver

Verfasst: 23. Mär 2006, 08:50
von Niki
Hallo Oliver,

also, das Modul "blätterbare Articlelist" habe ich so verstanden, dass die einzelnen Article einer Kategorie als Links angezeigt werden, wenn man auf diese Links geht, wird ein Article angezeigt und man kann mit den Links "vor" und "zurück", wie in der JAOS-Galerie, blättern.

Bei mir werden die INhalte der einzelnen Article aber untereinander gereiht.

Weisst du jetzt, was ich meine? :?
Wenn nicht, erkläre ich es noch mal anders.

LG,
Niki

Verfasst: 23. Mär 2006, 09:56
von Thomas.Blum
Hej Niki,

ich verwende das Modul nicht und kann daher nur eine Vermutung geben.

Die blätterbare Artikelliste gibt die kompletten Artikel zurück. Es erscheinen nur eine bestimmte Anzahl von Artikel (im Modul ist 3 angegeben). Wenn nun aber mehr als 3 Artikel vorhanden sind, dann kommt die Navigation zum vorschein, so dass du zu den nächsten 3 Artikel kommst.

vg Thomas

Verfasst: 23. Mär 2006, 10:02
von Niki
Hallo Thomas,

du bist mein Held! ;-)

Ich habe die Anzahl der Article auf 1 gesetzt und nun klappt es.
Es sind doch meistens die kleinen Denkfehler, die es ausmachen. :-)

LG,
Niki

Verfasst: 23. Mär 2006, 11:19
von Oliver.Kreischer
hi niki,

bin leider zu spät mit der antwort.
aber thomas antwort war ja die richtige..

gruß
oliver

Verfasst: 28. Mär 2006, 15:31
von Niki
Tag,

jetzt ist noch die Frage, wie ich das Ganze nicht nach dem Erstellungsdatum sondern nach dem Änderungsdatum sortiere.
Oder meinetwegen auch alphabetisch.

Ich würde das Modul gern zum Durchblättern eines Kalenders verwenden, bis der angekündigte Eventkalender als Modul online gestellt wird. ;-)


Gruß,
Niki

Verfasst: 28. Mär 2006, 15:54
von Thomas.Blum
Hej,
Niki hat geschrieben:jetzt ist noch die Frage, wie ich das Ganze nicht nach dem Erstellungsdatum sondern nach dem Änderungsdatum sortiere.
Schreibe anstatt _erstelldatum -> _updatedate

vg Thomas

PS: Wo darf man sich das Online ansehen?

Verfasst: 28. Mär 2006, 16:07
von Niki
Hallo Thomas,

das Ganze kannst du hier sehen:

http://www.schuhbecks-check-inn.de/Reda ... 85&start=0

Vielleicht kannst du mir auch noch dabei helfen, wie man z.b. die Links "nächste Seite" und "vorherige Seite" an den Artikelanfang bekommt und es trotzdem noch funktioniert

und was ich im Texteingabemodul eintregen muss, wenn keine Einträge vorhanden sind, damit die Linien nicht so blöd nach oben rutschen.

Das wäre prima!
Danke auch für den Sortiertip.

Gruß,
Niki

Verfasst: 28. Mär 2006, 16:30
von Thomas.Blum
Hej,
Niki hat geschrieben:Vielleicht kannst du mir auch noch dabei helfen, wie man z.b. die Links nächste Seite" und "vorherige Seite" an den Artikelanfang bekommt und es trotzdem noch funktioniert
schreibe anstatt

Code: Alles auswählen

echo $article->getArticle();

$out = $article->getArticle();
und dann

Code: Alles auswählen

print $out;
wo es ausgegeben werden soll.
Niki hat geschrieben:und was ich im Texteingabemodul eintregen muss, wenn keine Einträge vorhanden sind, damit die Linien nicht so blöd nach oben rutschen.
Das liegt an deiner Klasse eigenes_rechts. Musst du halt anpassen.

vg Thomas