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)
moduleingabeCode: 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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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-beispielCode: 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