artikelliste/ linkliste

Fragen/Tipps allgemeiner Art.

artikelliste/ linkliste

Beitragvon Oliver.Kreischer » 28. Jul 2005, 12:02

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
Benutzeravatar
Oliver.Kreischer
 
Beiträge: 1820
Registriert: 16. Dez 2004, 23:03
Wohnort: Feldafing

Beitragvon Thomas.Blum » 28. Jul 2005, 12:46

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
blumbeet - web.studio - Dresden - 0351 217 6225
webbude - Blog über CSS.XHTML.REX
Ein Wunschzettel
Benutzeravatar
Thomas.Blum
Entwickler
 
Beiträge: 4670
Registriert: 24. Aug 2004, 21:11
Wohnort: Dresden

Beitragvon Oliver.Kreischer » 28. Jul 2005, 12:50

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
Benutzeravatar
Oliver.Kreischer
 
Beiträge: 1820
Registriert: 16. Dez 2004, 23:03
Wohnort: Feldafing

Beitragvon Markus.Staab » 28. Jul 2005, 13:02

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
Benutzeravatar
Markus.Staab
Entwickler
 
Beiträge: 9781
Registriert: 29. Jan 2005, 14:50
Wohnort: Aschaffenburg/Germany

Beitragvon Oliver.Kreischer » 28. Jul 2005, 13:38

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
Benutzeravatar
Oliver.Kreischer
 
Beiträge: 1820
Registriert: 16. Dez 2004, 23:03
Wohnort: Feldafing

Beitragvon Markus.Staab » 28. Jul 2005, 13:47

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
Benutzeravatar
Markus.Staab
Entwickler
 
Beiträge: 9781
Registriert: 29. Jan 2005, 14:50
Wohnort: Aschaffenburg/Germany

Beitragvon Oliver.Kreischer » 28. Jul 2005, 13:50

danke der nachfrage:

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

so ware der (von goldfisch)

gruß
oliver
Benutzeravatar
Oliver.Kreischer
 
Beiträge: 1820
Registriert: 16. Dez 2004, 23:03
Wohnort: Feldafing

Beitragvon Markus.Staab » 28. Jul 2005, 13:52

Hi,

kann man das auch online ansehen?

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

Gruß,
Markus
Benutzeravatar
Markus.Staab
Entwickler
 
Beiträge: 9781
Registriert: 29. Jan 2005, 14:50
Wohnort: Aschaffenburg/Germany

Beitragvon Oliver.Kreischer » 28. Jul 2005, 13:58

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
Benutzeravatar
Oliver.Kreischer
 
Beiträge: 1820
Registriert: 16. Dez 2004, 23:03
Wohnort: Feldafing

Beitragvon Markus.Staab » 28. Jul 2005, 14:05

Hi,

schick mir bitte per PM nen Zugang zum Redaxo.

Gruß,
Markus
Benutzeravatar
Markus.Staab
Entwickler
 
Beiträge: 9781
Registriert: 29. Jan 2005, 14:50
Wohnort: Aschaffenburg/Germany

Beitragvon Oliver.Kreischer » 28. Jul 2005, 14:16

vielen dank für die hilfsbereitschaft!
Benutzeravatar
Oliver.Kreischer
 
Beiträge: 1820
Registriert: 16. Dez 2004, 23:03
Wohnort: Feldafing

Beitragvon Markus.Staab » 28. Jul 2005, 14:54

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
Benutzeravatar
Markus.Staab
Entwickler
 
Beiträge: 9781
Registriert: 29. Jan 2005, 14:50
Wohnort: Aschaffenburg/Germany

Beitragvon Oliver.Kreischer » 28. Jul 2005, 17:29

ich bedanke mich hier nochmal herzlichst für die hilfe!

oliver
Benutzeravatar
Oliver.Kreischer
 
Beiträge: 1820
Registriert: 16. Dez 2004, 23:03
Wohnort: Feldafing

Beitragvon Markus.Staab » 1. Aug 2005, 17:43

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
Benutzeravatar
Markus.Staab
Entwickler
 
Beiträge: 9781
Registriert: 29. Jan 2005, 14:50
Wohnort: Aschaffenburg/Germany

!

Beitragvon Oliver.Kreischer » 1. Aug 2005, 22:09

und wieder danke!

oliver
Benutzeravatar
Oliver.Kreischer
 
Beiträge: 1820
Registriert: 16. Dez 2004, 23:03
Wohnort: Feldafing

Nächste

Zurück zu Allgemeines [R2]

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast