[phpBB Debug] PHP Warning: in file [ROOT]/ext/tas2580/seourls/event/listener.php on line 213: Undefined array key "FORUM_NAME"
In Kategorien blättern Seite: 1, 2, 3, 4, ... - 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/
ThomasS
Beiträge: 130
Registriert: 12. Apr 2007, 12:53
Wohnort: Friedberg

In Kategorien blättern Seite: 1, 2, 3, 4, ...

5. Jul 2008, 11:14

Hallo liebe Forenmitglieder,

ich habe mehrere Kategorien ("Seiten") angelegt und möchte zwischen ihnen blättern.

Deshalb habe ich das unten eingefügte Blättermodul eingebaut. Es funktioniert gut - ich brauche es nur unten in jede Seite einzufügen und es entstehen weiter- zurück - Links.

Wenn ich 11 Seiten habe, muss ich von der Startseite aus umständlich 10 mal auf den Weiter-Link klicken, um zu Seite 11 zu kommen. Wenn ich zurück will zu Seite 5, muss ich umständlich 6 mal zurückklicken. Bei mehr Seiten wird es noch mühsamer.

Deshalb möchte ich zusätzlich eine automatische Verlinkung einbauen, die alle in einer Kategorie vorhandenen Artikel zählen kann:

<< zurück - weiter >>
Seite 1 2 3 4 5 6 7 8 9 10 11
Sie befinden sich auf Seite 8 von 11

Gibt es so ein Modul schon? Ich habe gesucht, aber keins gefunden!

Vielen Dank für Eure Unterstützung!
Herzliche Grüße

Modulausgabe:

Code: Alles auswählen

<?php
$config = 1;        // 1 wenn auch der Zurück-Button erscheinen soll
$startpage = 1;     // 1 wenn der Startartikel auch eingebunden werden soll


$cat = OOCategory::getCategoryById($this->getValue("category_id"));   // hier die ID der Kategorie
$articles = $cat->getArticles(true); // Alle Artikel der Kategorie auslesen, die Online sind

if ( is_array( $articles) && count($articles) > 0) {
  foreach ( $articles as $key => $article) {
    // Beim aktuellen Artikel den Key ausgeben
                  if ($article->getId() == REX_ARTICLE_ID) $artkey = $key;


}

if($startpage != 1){ $count = 1; }else{ $count = 0;}

echo '<p>';
if($artkey-1 >= $count && $config == 1)
echo '<a href="index.php?article_id=' . $articles[$artkey-1]->getId() .'&clang=0" class="artikelblaettern">« Seite zurück</a> ';

if(count($articles) > $artkey+1)
echo ' <a href="index.php?article_id=' . $articles[$artkey+1]->getId() .'&clang=0" class="artikelblaettern">nächste Seite »</a>';
echo '</p>';
}
?> 

Benutzeravatar
Markus.Staab
Entwickler
Beiträge: 9634
Registriert: 29. Jan 2005, 15:50
Wohnort: Aschaffenburg/Germany
Kontaktdaten: ICQ Website

5. Jul 2008, 11:17

Hi,

es gibt auch blättermodule, die einen Artikel einbinden und nicht auf diesen direkt weiterverlinken. Dann müsstest du nur im Startartikel der Kategorie das Blättermodul einbinden...

Schau mal in der Modulsammlung.

Gruß,
Markus

ThomasS
Beiträge: 130
Registriert: 12. Apr 2007, 12:53
Wohnort: Friedberg

Blätterbare Artikelliste

5. Jul 2008, 12:13

Hi Markus,

vielen Dank, stimmt, das ist eine viel bessere Idee.
Es erspart die Mühe, jedes Mal am Ende eines Artikels ein Linkmoduk einfügen zu müssen.

Ich habe jetzt im News-Modul "Blätterbare Artikelliste" den Bereich deaktiviert, in dem die Artikel nach Erstellungsdatum sortiert werden. Jetzt werden sie nach Prio aufgelistet, was bedeutet, dass ich die Reihenfolge der Seiten ändern kann, indem ich die Prio ändere.

Code: Alles auswählen

/*
Sortieren nach Erstellungsdatum

Wenn ich das "Sortieren nach Erstellungsdatum" auskommentiere, werden die Artikel nach ID-Reihenfolge im Backend aufgelistet! Dann kann es als normales Blätter-Modul verwendet werden!

if ( $articles_length > 0) {

   usort( $articles, "sortArticlesByCreateDate");
}

*/
Allerdings besteht auch bei diesem Modul das Problem, dass das Blättern zwischen vielen Seiten sehr umständlich ist. Bei einer buchähnlichen Erzählung, die sich über 50 Seiten hinzieht, würde man ziemlich herumklicken müssen! Und wenn ich bis Seite 45 gelesen habe und am nächsten Tag weiter lesen möchte, muss ich mühsam wieder 45 mal klicken, um zu dieser Seite zu gelangen.

Gibt es so eine Navi evtl. schon?
Ist die Blätterbare Artikelliste der richtige Ansatz?

<< zurück - weiter >>
Seite 1 2 3 4 5 6 7 8 9 10 11
Sie befinden sich auf Seite 8 von 11

Herzliche Grüße
Thomas

Benutzeravatar
Markus.Staab
Entwickler
Beiträge: 9634
Registriert: 29. Jan 2005, 15:50
Wohnort: Aschaffenburg/Germany
Kontaktdaten: ICQ Website

5. Jul 2008, 13:35

Hi Thomas,

obs sowas schon gibt weiß ich nicht, allerdings sollte es kein Problem sein sowas schnell zu entwickeln ;)

Gruß,
Markus

ThomasS
Beiträge: 130
Registriert: 12. Apr 2007, 12:53
Wohnort: Friedberg

5. Jul 2008, 13:46

Hi Markus,

super, was hältst Du davon, wenn Du es entwickelst (die Links sollten mehrsprachig funktionieren), ich es bezahle und wenn wir das Ergebnis der Redaxo Gemeinde zur Verfügung stellen?

Wenn man dann den Bereich, den ich auskommentiert habe, wieder einkommentiert, kann man das Ganze auch als blätterbares Newsmodul verwenden (in dem der aktuellste Eintrag vorne steht!)

<< zurück - weiter >>
Seite 1 2 3 4 5 6 7 8 9 10 11
Sie befinden sich auf Seite 8 von 11



Herzliche Grüße
Thomas

Kontakt:
www.webdesign-und-it.de

Benutzeravatar
Markus.Staab
Entwickler
Beiträge: 9634
Registriert: 29. Jan 2005, 15:50
Wohnort: Aschaffenburg/Germany
Kontaktdaten: ICQ Website

5. Jul 2008, 13:49

Hi Thomas,

können wir gerne so machen, aber erst nächste Woche (Mi/Do). Schreib mich bitte nochmal deswegen an.

Gruß,
Markus

ThomasS
Beiträge: 130
Registriert: 12. Apr 2007, 12:53
Wohnort: Friedberg

5. Jul 2008, 14:00

Hi Markus,

vielen Dank, alles klar, das werde ich machen!

Herzliche Grüße
Thomas

Benutzeravatar
Markus.Staab
Entwickler
Beiträge: 9634
Registriert: 29. Jan 2005, 15:50
Wohnort: Aschaffenburg/Germany
Kontaktdaten: ICQ Website

10. Jul 2008, 11:16


gpo
Beiträge: 322
Registriert: 28. Mär 2006, 02:10

12. Jul 2008, 17:46

Hui,

danke Thomas und Markus. Aber das Modul führt bei mir zu einem internal Server Error, wenn ich es einsetze. Komisch. Wenn ich es in den Startartikel einer Kategorie einsetze, dann steht da nur "Seite" und in der nächsten Zeile "1", weil ich noch genau einen Artikel in der Kategorie habe. Blättern geht nicht. Wenn ich in den zweiten Artikel das Modul einfügen will, entsteht der Server Error.

LG,

gpo

Benutzeravatar
Markus.Staab
Entwickler
Beiträge: 9634
Registriert: 29. Jan 2005, 15:50
Wohnort: Aschaffenburg/Germany
Kontaktdaten: ICQ Website

12. Jul 2008, 18:28

Hi,

das ganze wurde entwickelt und getestert unter REDAXO 4.1.
Das Modul muss, wie es auch im Code steht nur im Startartikel der Kategorie eingefügt werden. Das Blättern funktioniert dann immer über den Startartikel der die anderen Artikel der gleichen Kategorie welche Online sein müssen einbindet.

Gruß,
Markus

gpo
Beiträge: 322
Registriert: 28. Mär 2006, 02:10

29. Jul 2008, 21:54

Ah, okay, ich hatte das Prinzip nicht verstanden. Das hieße aber auch, dass der Startartikel selbst keine Blöcke haben sollte außer dem modul, weil die ja sonst immer mit ausgegeben werden.

ThomasS
Beiträge: 130
Registriert: 12. Apr 2007, 12:53
Wohnort: Friedberg

Frage/Idee zum Blättermodul

2. Aug 2008, 09:01

Hallo Markus, hallo liebe Forenmitglieder,

vielen Dank, das Modul funktioniert bestens! Und die zugehörigen CSS lassen es sehr hübsch aussehen! Ein tolles Teil!

Ich habe es getestet. Dabei fiel mir auf: Wenn ich ein Buch im Web veröffentlichen möchte, das z.B. 100 Seiten hat, kann Google bestenfalls die Startseite (Kategorie mit 1. Artikel) durchsuchen - alle anderen 99 Seiten (Artikel) bleiben der Suchmaschine verborgen (glaube ich zumindest).

Denn der Link entspricht immer der Startseite der Kategorie, der Link bleibt also beim Blättern immer gleich.

Gibt es eine Möglichkeit, das Modul ohne großen Aufwand zu modifizieren, so dass auf Wunsch auch durch "richtige" Seiten geblättert werden kann? So dass jede Seite ihren eigenen Namen und Link hat? Evtl., indem statt in Artikeln dann in Kategorien geblättert wird?

Herzliche Grüße
Thomas

ThomasS
Beiträge: 130
Registriert: 12. Apr 2007, 12:53
Wohnort: Friedberg

2. Aug 2008, 09:36

Äh sorry, (Schäm),
jetzt klappt es!

Schade dass man dumme Fragen nicht löschen kann...

So sieht der Link aus, und die Suchmaschine kann einzelne Seiten natürlich auch bei Artikeln anwählen:

http://www.meineseite.de/215-0-seitenname.html?page=1

Viele Grüße
Thomas

Tizian
Beiträge: 151
Registriert: 4. Apr 2008, 11:58
Wohnort: Bremen
Kontaktdaten: Website

startseiten der children (kinder-kategorien) ausgeben

9. Jul 2009, 08:52

hallo,

ich würde das modul gerne so abändern, dass statt aller artikel einer kategorie die startseiten der kinder-kategorien ausgegeben werden.

(Code gelöscht und neuen Thread eröffnet)
Zuletzt geändert von Tizian am 9. Jul 2009, 15:44, insgesamt 1-mal geändert.
schöne grüße
tizian
********************************
ansichtsache TM

ThomasS
Beiträge: 130
Registriert: 12. Apr 2007, 12:53
Wohnort: Friedberg

9. Jul 2009, 11:49

Hallo,

bei dieser Gelegenheit wäre es evtl. sinnvoll, statt page=1 den Namen des Artikels einzugeben. Das würde die Suchmaschinentauglichkeit deutlich erhöhen.

statt:
http://www.meineseite.de/303-0-meinekat ... tml?page=1
lieber so:
http://www.meineseite.de/303-0-meinekat ... einartilel

Es gibt übrigens ein Alternativmodul zu diesem:

http://www.redaxo.de/165-0-moduldetails ... ule_id=452
www.cklausi.de

Das basiert zwar leider noch auf Tabellen, aber das kann man relativ leicht in div Elemente ändern. Der Vorteil dieses Moduls liegt darin, dass man angeben kann, wie viele Artikel pro Seite erscheinen sollen, und diese Artikel kann man sortieren (z.B. nach Erstellungsdatum oder nach Aktualisiertungsdatum).

Leider bietet auch dieses Modul momentan noch nicht die Möglichkeit, den Artikelnamen suchmaschinenfreundlich auszugeben.

Aber ansonsten empfinde ich es als eines der wichtigsten Module, die Redaxo für den Alltagsgebrauch zu bieten hat.

Viele Grüße
Thomas

Benutzeravatar
mow
Beiträge: 73
Registriert: 2. Jul 2007, 01:49
Kontaktdaten: Website

Artikelliste einer Kategorie mit Blätterfunktion

12. Jul 2009, 04:08

hallo ThomasS

hier (d)eine version als ul-liste und einigen zusätzlichen einstellungsmöglichkeiten:

artikelauswahl:
alle / nur online / nur offline
sortieren nach:
name / prior / create / id / update
anzeigen:
anzahl 'x von n' : ja/nein
erste / letzte : ja/nein
vorherige / nächste : ja/nein
anzahl links vor aktuell : anzahl. alle, keine
anzahl links nach aktuell : anzahl. alle, keine
format:
1 ul
erste - x bis n - letzte
2 ul
erste - letzte
x bis n
3 ul
erste
x bis n
letzte

um die mehrsprachigkeit zu gewährleisten wird das opf_lang-addon empfohlen:
Output Filter
http://www.redaxo.de/180-0-addon-detail ... ddon_id=10
angaben zu den platzhaltern findest du in der modulausgabe unter 'hinweise:'

EDIT:
in ausgabe zeile 138 mit abfrage für 'x von n' respektive 'n Art.' ergänzt.

danke ThomasS für den hinweis ;o)

moduleingabe

Code: Alles auswählen

<?php
/**
 *=============================================
 * REDAXO-Modul: Artikelliste einer Kategorie mit Blätterfunktion
 * Bereich: EINGABE
 * Redaxo Version: 4.x
 * HTML-/XHTML-Version: XHTML
 * 
 * Hinweise:
 * http://forum.redaxo.de/ftopic9607.html
 * 
 * Erforderliche Addons: opf_lang
 *
 * Bearbeitung: mow
 * webberater.ch
 * Datum: 090721
 * Ursprung: http://www.redaxo.de/165-0-moduldetails.html?module_id=452
 * Ursprungsname: CK-Scroll v0.13
 * Typ: Modifikation / Erweiterung  
 *=============================================
 */

if ($REX['REDAXO'])
{
  echo '<div class="rex-message"><div class="rex-info"><span>Kategorie ID: REX_CATEGORY_ID / Artikel ID: REX_ARTICLE_ID / Slice ID: REX_SLICE_ID</span><span style="font-weight:normal;">';
  $artikelvar = OOArticle::getArticleById("REX_ARTICLE_ID");
  $createby   = $artikelvar->getcreateuser();
  $updateby   = $artikelvar->getupdateuser();
  echo "Erstellt von ".$createby.", ".date('d.m.Y - G:i:s', $artikelvar->getcreatedate());
  echo "<br />";
  echo "Geändert von ".$updateby.", ".date('d.m.Y - G:i:s', $artikelvar->getupdatedate());
  echo '</span></div></div>'."\n";

	// fehlermeldungen
	// benötigte addon
	/* -------------- */
	$opf_lang = OOAddon::isAvailable('opf_lang');
	if ($opf_lang == 0) echo '<div class="rex-message"><div class="rex-warning"><span>Dieses Modul benötigt das "opf_lang" Addon!</span></div></div>';
	/* -------------- */
}
?>
<table class="rex-table">
	<colgroup>
		<col width="290" />
		<col width="10" />
		<col width="*" />
	</colgroup>

	<tr>
		<td valign="top"><strong>Artikel</strong></td>
		<td>&nbsp;</td>
		<td><select name="VALUE[4]" id="VALUE[4]">
				<option value="alle" <?php if('REX_VALUE[4]' == 'alle') echo 'selected="selected"'; ?>>Alle</option>
				<option value="on"   <?php if('REX_VALUE[4]' == 'on')   echo 'selected="selected"'; ?>>Nur Online-Artikel</option>
				<option value="off"  <?php if('REX_VALUE[4]' == 'off')  echo 'selected="selected"'; ?>>Nur Offline-Artikel</option>
			</select></td>
	</tr>
	<tr>
		<td valign="top"><strong>Artikel pro Seite</strong></td>
		<td>&nbsp;</td>
		<td><input type="text" name="VALUE[1]" id="VALUE[1]" value="REX_VALUE[1]" size="4" /></td>
	</tr>
	<tr>
		<td valign="top"><strong>Sortiert nach</strong></td>
		<td>&nbsp;</td>
		<td><select name="VALUE[2]" id="VALUE[2]">
			<option value="name"       <?php if('REX_VALUE[2]' == 'name')       echo 'selected="selected"'; ?>>Name</option>
			<option value="prior"      <?php if('REX_VALUE[2]' == 'prior')      echo 'selected="selected"'; ?>>Prior</option>
			<option value="createdate" <?php if('REX_VALUE[2]' == 'createdate') echo 'selected="selected"'; ?>>Erstelldatum (createdate)</option>
			<option value="id"         <?php if('REX_VALUE[2]' == 'id')         echo 'selected="selected"'; ?>>Artikel-ID (id)</option>
			<option value="updatedate" <?php if('REX_VALUE[2]' == 'updatedate') echo 'selected="selected"'; ?>>Updatedatum (updatedate)</option>
    </select></td>
	</tr>
	<tr>
		<td valign="top"><strong>Sortierrichtung</strong></td>
		<td>&nbsp;</td>
		<td><select name="VALUE[3]" id="VALUE[3]">
			<option value="ASC"  <?php if('REX_VALUE[3]' == 'ASC')  echo 'selected="selected"'; ?>>Aufsteigend (ASC)</option>
			<option value="DESC" <?php if('REX_VALUE[3]' == 'DESC') echo 'selected="selected"'; ?>>Absteigend (DESC)</option>
    </select></td>
	</tr>
	<tr>
		<td colspan="3"><h3 class="rex-hl2">Navigation Output</h3></td>
	</tr>
	<tr>
		<td valign="top"><strong>Anzahl</strong> 'x von n' oder 'n Art.'</td>
		<td>&nbsp;</td>
		<td><select name="VALUE[5]" id="VALUE[5]">
			<option value="1" <?php if('REX_VALUE[5]' == '1') echo 'selected="selected"'; ?>>Anzeigen</option>
			<option value="0" <?php if('REX_VALUE[5]' == '0') echo 'selected="selected"'; ?>>Nicht anzeigen</option>
    </select></td>
	</tr>
	<tr>
		<td valign="top"><strong>Erste / Letzte</strong></td>
		<td>&nbsp;</td>
		<td><select name="VALUE[6]" id="VALUE[5]">
			<option value="1" <?php if('REX_VALUE[6]' == '1') echo 'selected="selected"'; ?>>Anzeigen</option>
			<option value="0" <?php if('REX_VALUE[6]' == '0') echo 'selected="selected"'; ?>>Nicht anzeigen</option>
    </select></td>
	</tr>
	<tr>
		<td valign="top"><strong>Vorherige / Nächste</strong></td>
		<td>&nbsp;</td>
		<td><select name="VALUE[7]" id="VALUE[7]">
			<option value="1" <?php if('REX_VALUE[7]' == '1') echo 'selected="selected"'; ?>>Anzeigen</option>
			<option value="0" <?php if('REX_VALUE[7]' == '0') echo 'selected="selected"'; ?>>Nicht anzeigen</option>
    </select></td>
	</tr>
	<tr>
		<td valign="top"><strong>Anzahl Links vor Aktuell</strong></td>
		<td>&nbsp;</td>
		<td><input type="text" name="VALUE[9]" id="VALUE[9]" value="REX_VALUE[9]" size="4" /> (zB. 3 oder: wenn leer = keine; wenn x = alle)</td>
	</tr>
	<tr>
		<td valign="top"><strong>Anzahl Links nach Aktuell</strong></td>
		<td>&nbsp;</td>
		<td><input type="text" name="VALUE[10]" id="VALUE[10]" value="REX_VALUE[10]" size="4" /> (zB. 3 oder: wenn leer = keine; wenn x = alle)</td>
	</tr>
	<tr>
		<td valign="top"><strong>Ausrichtung</strong></td>
		<td>&nbsp;</td>
		<td><select name="VALUE[8]" id="VALUE[8]">
			<option value="1" <?php if('REX_VALUE[8]' == '1') echo 'selected="selected"'; ?>>Erste - x bis n - Letzte (1 ul)</option>
			<option value="2" <?php if('REX_VALUE[8]' == '2') echo 'selected="selected"'; ?>>Erste - Letzte / x bis n (2 ul)</option>
			<option value="3" <?php if('REX_VALUE[8]' == '3') echo 'selected="selected"'; ?>>Erste / x bis n / Letzte (3 ul)</option>
    </select></td>
		<td>&nbsp;</td>
		<td>
	</td>
</table>
modulausgabe

Code: Alles auswählen

<?php
/**
 *=============================================
 * REDAXO-Modul: Artikelliste einer Kategorie mit Blätterfunktion
 * Bereich: AUSGABE
 * Redaxo Version: 4.x
 * HTML-/XHTML-Version: XHTML
 * 
 * Hinweise:
 * http://forum.redaxo.de/ftopic9607.html
 * TEXTE (im opf_lang-Addon editieren)
 * ##pagi_erste## = << Erste Seite
 * ##pagi_vorherige## = < Vorherige Seite
 * ##pagi_nächste## = > Nächste Seite
 * ##pagi_letzte## = >> Letzte Seite
 * ##pagi_von## = von
 * ##pagi_nichts## = Keine Artikel vorhanden.
 * 
 * Erforderliche Addons: opf_lang
 *
 * Bearbeitung: mow
 * webberater.ch
 * Datum: 090721
 * Ursprung: http://www.redaxo.de/165-0-moduldetails.html?module_id=452
 * Ursprungsname: CK-Scroll v0.13
 * Typ: Modifikation / Erweiterung  
 *=============================================
 */

if ($REX['REDAXO'])
{
  echo '<div class="rex-message"><div class="rex-info"><span>Kategorie ID: REX_CATEGORY_ID / Artikel ID: REX_ARTICLE_ID / Slice ID: REX_SLICE_ID</span><span style="font-weight:normal;">';
  $artikelvar = OOArticle::getArticleById("REX_ARTICLE_ID");
  $createby   = $artikelvar->getcreateuser();
  $updateby   = $artikelvar->getupdateuser();
  echo "Erstellt von ".$createby.", ".date('d.m.Y - G:i:s', $artikelvar->getcreatedate());
  echo "<br />";
  echo "Geändert von ".$updateby.", ".date('d.m.Y - G:i:s', $artikelvar->getupdatedate());
  echo '</span></div></div>'."\n";

	// fehlermeldungen
	// benötigte addon
	/* -------------- */
	$opf_lang = OOAddon::isAvailable('opf_lang');
	if ($opf_lang == 0) echo '<div class="rex-message"><div class="rex-warning"><span>Dieses Modul benötigt das "opf_lang" Addon!</span></div></div>';
	/* -------------- */
}

$m452_Page = rex_get('go', 'int', 0);
$m452_Pagex = $m452_Page+1;
$m452_ArtPerPage = 'REX_VALUE[1]';
$m452_ArtStart = $m452_Page * $m452_ArtPerPage;
$m452_Sort = 'REX_VALUE[2] REX_VALUE[3]';
$m452_onoff = 'REX_VALUE[4]';

// Artikel
$m452_qry = "SELECT
				id, name 
			FROM 
				" . $REX['TABLE_PREFIX'] . "article 
			WHERE 
				" . $REX['TABLE_PREFIX'] . "article.path LIKE '%|" . REX_CATEGORY_ID . "|%'
			AND 
				clang='" . $this->clang . "' ";
				if ($m452_onoff == 'off') {
					$m452_qry .= "			AND 
				status='0' ";
				}
				elseif ($m452_onoff == 'on') {
					$m452_qry .= "			AND 
				status='1' ";
				}
				else {
					$m452_qry .= "			AND 
				(status='0' OR status='1') ";
				}
				$m452_qry .= "			AND 
				startpage='0' 
			ORDER BY 
				" . $m452_Sort . "
			LIMIT
				" . $m452_ArtStart . ", " . $m452_ArtPerPage . "";

$m452_sql = new sql();
$m452_sql->setQuery( $m452_qry ); 
$m452_Articles = $m452_sql->get_array();

$m452_CountArt = count($m452_Articles);

if ($m452_CountArt > 0) {

	$m452_out = '';
	
	foreach ($m452_Articles as $m452_row) {
		$m452_slice = new article;
		$m452_slice->setArticleID($m452_row['id']);
		$m452_out .= $m452_slice->getArticle();
	}
	
	// Blättern
	$m452_PrevPage = $m452_Page - 1;
	$m452_NextPage = $m452_Page + 1;

	if ($m452_PrevPage < 0) $m452_PrevPage = 0;
	
	$m452_qry2 = "SELECT
				COUNT('id')
			FROM 
				" . $REX['TABLE_PREFIX'] . "article 
			WHERE 
				" . $REX['TABLE_PREFIX'] . "article.path LIKE '%|" . REX_CATEGORY_ID . "|%'
			AND 
				clang='" . $this->clang . "" . $this->clang . "' ";
				if ($m452_onoff == 'off') {
					$m452_qry2 .= "			AND 
				status='0' ";
				}
				elseif ($m452_onoff == 'on') {
					$m452_qry2 .= "			AND 
				status='1' ";
				}
				else {
					$m452_qry2 .= "			AND 
				(status='0' OR status='1') ";
				}
				$m452_qry2 .= "			AND 
				startpage='0'";
		
	$m452_sql2 = new sql();
	$m452_sql2->setQuery( $m452_qry2 ); 
	$m452_CountAllArt = $m452_sql2->getValue(0);
	
	$m452_Lastpage = ceil( $m452_CountAllArt / $m452_ArtPerPage ) - 1;
	
	if ($m452_CountAllArt > $m452_ArtPerPage) {
		$m452_out .= "\n\n";
		$m452_out .= '<ul class="pagination">'."\n";
		if ('REX_VALUE[5]' == 1) {
			if ('REX_VALUE[1]' <= 1) {
				$m452_out .= '  <li class="previous-off" style="display:block;width:100%;">'. $m452_Pagex .' ##pagi_von## '. $m452_CountAllArt .'</li>'."\n";
			}
			else {
				$m452_out .= '  <li class="previous-off" style="display:block;width:100%;">'. $m452_CountAllArt .' Art.</li>'."\n";
			}
		}
		
		if ($m452_PrevPage >= 0 && $m452_PrevPage != $m452_Page) {
			if ($m452_Page == 1 && 'REX_VALUE[6]' == 1) $none1 = ' style="display:none;"';
			if ($m452_Page == 1) $bold1 = ' style="font-weight:bold;"';
			if ('REX_VALUE[6]' == 1) $m452_out .= '  <li class="previous-a"><a'.$bold1.' href="' . rex_getUrl( '', '', array('go' => '0') ) . '">##pagi_erste##</a></li>'."\n";
			if ('REX_VALUE[7]' == 1) $m452_out .= '  <li class="previous"'.$none1.'><a href="' . rex_getUrl( '', '', array('go' => $m452_PrevPage) ) . '">##pagi_vorherige##</a></li>'."\n";
		}

		if ('REX_VALUE[8]' == 1) {
			if ($m452_Lastpage > 0) {
	
				for ($i = 0; $i <= $m452_Lastpage; $i++) {
					$m452_PageTemp = $i + 1;
					if ($i == $m452_Page) {
						// aktueller link
						$m452_out .= '  <li class="active">'. $m452_PageTemp . '</li>'."\n";
					}
					else {
						// anzahl links vor und/oder nach aktuell
						if ( ('REX_VALUE[9]' != '' && 'REX_VALUE[9]' != 'x') || ('REX_VALUE[10]' != '' && 'REX_VALUE[10]' != 'x') ) {
							if ( ($m452_Page - 'REX_VALUE[9]' + 1 <= $m452_PageTemp) && ($m452_Page + 'REX_VALUE[10]' + 1 >= $m452_PageTemp) ) {
								$m452_out .= '  <li><a href="' . rex_getUrl( '', '', array('go' => $i) ) . '">' . $m452_PageTemp . '</a></li>'."\n";
							}
						}
						// alle links vor aktuell
						if ( ('REX_VALUE[9]' == 'x') ) {
							if ( ($m452_Page > $m452_PageTemp) ) {
								$m452_out .= '  <li><a href="' . rex_getUrl( '', '', array('go' => $i) ) . '">' . $m452_PageTemp . '</a></li>'."\n";
							}
						}
						// alle lins nach aktuell
						if ( ('REX_VALUE[10]' == 'x') ) {
							if ( ($m452_Page < $m452_PageTemp) ) {
								$m452_out .= '  <li><a href="' . rex_getUrl( '', '', array('go' => $i) ) . '">' . $m452_PageTemp . '</a></li>'."\n";
							}
						}
						// keine vor und/oder nach aktuell
						if ( ('REX_VALUE[9]' == '') || ('REX_VALUE[10]' == '' )) {
							$m452_out .= ''."\n";
						}
					} 
				} // end for
	
			}
		}

		if ('REX_VALUE[8]' == 3) {
			$m452_out .= '</ul>'."\n";
			$m452_out .= '<ul class="pagination zwei">'."\n";
		
			if ($m452_Lastpage > 0) {
	
				for ($i = 0; $i <= $m452_Lastpage; $i++) {
					$m452_PageTemp = $i + 1;
					if ($i == $m452_Page) {
						// aktueller link
						$m452_out .= '  <li class="active">'. $m452_PageTemp . '</li>'."\n";
					}
					else {
						// anzahl links vor und/oder nach aktuell
						if ( ('REX_VALUE[9]' != '' && 'REX_VALUE[9]' != 'x') || ('REX_VALUE[10]' != '' && 'REX_VALUE[10]' != 'x') ) {
							if ( ($m452_Page - 'REX_VALUE[9]' + 1 <= $m452_PageTemp) && ($m452_Page + 'REX_VALUE[10]' + 1 >= $m452_PageTemp) ) {
								$m452_out .= '  <li><a href="' . rex_getUrl( '', '', array('go' => $i) ) . '">' . $m452_PageTemp . '</a></li>'."\n";
							}
						}
						// alle links vor aktuell
						if ( ('REX_VALUE[9]' == 'x') ) {
							if ( ($m452_Page > $m452_PageTemp) ) {
								$m452_out .= '  <li><a href="' . rex_getUrl( '', '', array('go' => $i) ) . '">' . $m452_PageTemp . '</a></li>'."\n";
							}
						}
						// alle lins nach aktuell
						if ( ('REX_VALUE[10]' == 'x') ) {
							if ( ($m452_Page < $m452_PageTemp) ) {
								$m452_out .= '  <li><a href="' . rex_getUrl( '', '', array('go' => $i) ) . '">' . $m452_PageTemp . '</a></li>'."\n";
							}
						}
						// keine vor und/oder nach aktuell
						if ( ('REX_VALUE[9]' == '') || ('REX_VALUE[10]' == '' )) {
							$m452_out .= ''."\n";
						}
					} 
				} // end for
	
			}
			$m452_out .= '</ul>'."\n";
			$m452_out .= '<ul class="pagination zwei">'."\n";

		}
		
		if ($m452_CountAllArt > ( $m452_NextPage * $m452_ArtPerPage )) {
			if ($m452_Page == $m452_Lastpage || $m452_Page == $m452_Lastpage - 1 && 'REX_VALUE[6]' == 1) $none = ' style="display:none;"';
			if ($m452_Page == $m452_Lastpage && 'REX_VALUE[6]' == 0) $none = ' style="display:none;"';
			if ($m452_Page == $m452_Lastpage -1) $bold = ' style="font-weight:bold;"';
			if ('REX_VALUE[7]' == 1) $m452_out .= '  <li class="next"'.$none.'><a href="' . rex_getUrl( '', '', array('go' => $m452_NextPage) ) . '">##pagi_nächste##</a></li>'."\n";
			if ('REX_VALUE[6]' == 1) $m452_out .= '  <li class="next-z"><a'.$bold.' href="' . rex_getUrl( '', '', array('go' => $m452_Lastpage) ) . '">##pagi_letzte##</a></li>'."\n";
		}

		if ('REX_VALUE[8]' == 2) {
			$m452_out .= '</ul>'."\n";
			$m452_out .= '<ul class="pagination zwei">'."\n";
			if ($m452_Lastpage > 0) {
	
				for ($i = 0; $i <= $m452_Lastpage; $i++) {
					$m452_PageTemp = $i + 1;
					if ($i == $m452_Page) {
						// aktueller link
						$m452_out .= '  <li class="active">'. $m452_PageTemp . '</li>'."\n";
					}
					else {
						// anzahl links vor und/oder nach aktuell
						if ( ('REX_VALUE[9]' != '' && 'REX_VALUE[9]' != 'x') || ('REX_VALUE[10]' != '' && 'REX_VALUE[10]' != 'x') ) {
							if ( ($m452_Page - 'REX_VALUE[9]' + 1 <= $m452_PageTemp) && ($m452_Page + 'REX_VALUE[10]' + 1 >= $m452_PageTemp) ) {
								$m452_out .= '  <li><a href="' . rex_getUrl( '', '', array('go' => $i) ) . '">' . $m452_PageTemp . '</a></li>'."\n";
							}
						}
						// alle links vor aktuell
						if ( ('REX_VALUE[9]' == 'x') ) {
							if ( ($m452_Page >= $m452_PageTemp) ) {
								$m452_out .= '  <li><a href="' . rex_getUrl( '', '', array('go' => $i) ) . '">' . $m452_PageTemp . '</a></li>'."\n";
							}
						}
						// alle lins nach aktuell
						if ( ('REX_VALUE[10]' == 'x') ) {
							if ( ($m452_Page <= $m452_PageTemp) ) {
								$m452_out .= '  <li><a href="' . rex_getUrl( '', '', array('go' => $i) ) . '">' . $m452_PageTemp . '</a></li>'."\n";
							}
						}
						// keine vor und/oder nach aktuell
						if ( ('REX_VALUE[9]' == '') || ('REX_VALUE[10]' == '' )) {
							$m452_out .= ''."\n";
						}
					} 
				} // end for
	
			}
		}

		$m452_out .= '</ul>'."\n";
	}
	
	// Ausgabe
	$m452_out = ereg_replace('<ul class="pagination">'."\n".'</ul>', '', $m452_out);
	$m452_out = ereg_replace('<ul class="pagination zwei">'."\n".'</ul>', '', $m452_out);
	echo $m452_out;

}
else {
	echo '<p class="rot fett">##pagi_nichts##</p>'."\n";
}

?>
css-beispiel

Code: Alles auswählen

/* CSS Blätterfuktion */
.pagination {
float:left;
display:block;
margin:0 auto;
width:100%;
}
.zwei  {
margin-top:0.5em;
}
.pagination li {
border:0; 
margin:0; 
padding:0;
font-size:0.625em;
list-style:none;
margin-right:2px;
}
.pagination a {
border:solid 1px #9aafe5;
margin-right:2px;
}
.pagination .previous-off,
.pagination .next-off {
border:solid 1px #dedede;
color:#888888;
display:block;
float:left;
font-weight:bold;
margin-right:2px;
padding:3px 4px;
}
.pagination .next a,
.pagination .previous a {
font-weight:bold;
}
.pagination .next-z a,
.pagination .previous-a a {
font-weight:normal;
}
.pagination .active {
background:#2e6ab1;
color:#fff;
font-weight:bold;
display:block;
float:left;
padding:4px 6px;
}
.pagination a:link,
.pagination a:visited {
color:#0e509e;
display:block;
float:left;
padding:3px 6px;
text-decoration:none;
}
.pagination a:hover {
border:solid 1px #0e509e;
}
was auch noch zu optimieren wäre: wenn ich zum beispiel die seite '7' aufrufe, soll auch die id in der url '7' lauten und nicht '6'.
viel spass
mow
Zuletzt geändert von mow am 21. Jul 2009, 03:36, insgesamt 1-mal geändert.
best viewed with an open mind!

ThomasS
Beiträge: 130
Registriert: 12. Apr 2007, 12:53
Wohnort: Friedberg

13. Jul 2009, 13:26

Hallo mow,

vielen Dank! Allerdings sagt mein Backend (R4.2.0), wenn ich das Modul in die Seite einbinde:

Parse error: syntax error, unexpected '&' in /www/htdocs/w00b1f58/redaxo/include/classes/class.rex_article.inc.php(671) : eval()'d code on line 232

Viele Grüße
Thomas

Benutzeravatar
mow
Beiträge: 73
Registriert: 2. Jul 2007, 01:49
Kontaktdaten: Website

14. Jul 2009, 16:33

hallo ThomasS

leider kann ich die fehlermeldung bei mir nicht reproduzieren.

das modul habe ich unter einer rex4.2-utf-8-version weiterentwickelt und im einsatz.
gleich vorhin habe ich eine rex4.2-demo-iso installiert und das modul via copy/paste von obigem code erstellt. das ganze unter faq im startartikel (wie du es ja selber beschreibst) eingefügt und editiert.

ich bekomme keine fehlermeldungen.

grüsse
mow
best viewed with an open mind!

ThomasS
Beiträge: 130
Registriert: 12. Apr 2007, 12:53
Wohnort: Friedberg

Leerzeichen entfernt

17. Jul 2009, 12:41

Hallo Mow,

jetzt funktioniert es! Ich hatte den Quelltext einfach hier aus der Seite kopiert und in Redaxo eingesetzt. Dabei habe sich

Code: Alles auswählen

&nbsp;
Leerzeichen hineingemogelt. Ich habe den nun Quelltext erst in Weaverslave eingesetzt und ihn anschließend ins Redaxo Backend eingefügt - die Leerzeichen wurden entfernt, und nun klappt es.

Vielen Dank für dieses Modul! Mir persönlich erscheint es beinahe etwas zu kompliziert. Manchmal gibt es die Links so an:

1, 2, 2, 3, 4 ...
Mit anderen Worten: die aktuelle Seite 2 wird zweimal gezählt.

In einer anderen Einstellung fehlt die aktuelle Seite 2:
1, 3, 4, 5,...
Vermutlich ist das beabsichtigt, mich hat es allerdings verwirrt.

Dann gibt es an:
Seite 3 von 5 .... dabei habe ich nur drei Seiten - allerdings habe ich 5 Testartikel eingesetzt. Es zählt also die Artikel (von denen mehrere auf einer Seite sein können) statt der Seiten.

Die folgende Einstellung ist mir daher z.B. nicht so recht gelungen:

Seite 2 von 5
1, 2, 3, 4, 5

Es war also nicht ganz einfach für mich, eine geeignete, relativ simple Einstellung zu finden. Aber abgesehen von diesen Kleinigkeiten finde ich das Modul vorbildlich, vielen Dank!

Herzliche Grüße
Thomas

Leonid_Design
Beiträge: 8
Registriert: 22. Jan 2012, 18:38

Re: In Kategorien blättern Seite: 1, 2, 3, 4, ...

25. Jul 2012, 13:24

Hallo

ich bin sehr begeistert von diesen Modul.
Ich habe allerdings eine kleine Schwierigkeit, denn meine Artikel werden innerhalb von "paginate_art" ohne die Spalten [ctypes] angezeigt. Was muss in den Code um diese auch miteinzubeziehen?


Viele Grüße
Leonid

Benutzeravatar
Thomas.Blum
Entwickler
Beiträge: 5063
Registriert: 24. Aug 2004, 22:11
Wohnort: Dresden
Kontaktdaten: Website

Re: In Kategorien blättern Seite: 1, 2, 3, 4, ...

25. Jul 2012, 15:33

Hej,
du meinst der Artikel wird komplett ausgegeben?

du müsstest diese Zeile anpassen

alt

Code: Alles auswählen

$m452_out .= $m452_slice->getArticle();
neu

Code: Alles auswählen

$m452_out .= $m452_slice->getArticle(HIER_DEINE_CTYPE_ID_SETZEN);
vg Thomas

Zurück zu „Allgemeines [R4]“