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ä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ä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ä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
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