Bei Listview über die Seiten blättern (normales Paging)

Fragen zu den Grundfunktionen der webEdition Oberfläche wie Backup, Import, ...
Fragen zu we:Tags bitte im Forum "Templates erstellen"
Ellen

Bei Listview über die Seiten blättern (normales Paging)

Beitragvon Ellen » Mi 27. Apr 2005, 13:44

Hallo,

ich würde gerne bei einer Listview über die Seiten blättern können, statt nur über "vor" und "zurück". Es sollte ungefähr so aussehen:
<< < 1 2 3 > >>

In diesem Thread habe ich schon einen Ansatz gefunden:
http://forum.webedition.de/showthread.p ... l%E4ttern&

Leider wurde das Thema dort nicht fortgeführt. Ich habe das Beispiel nachvollzogen und habe die gleichen Probleme, wie der dortige Anwender. Ausserdem ist es ja auch noch nicht ganz das, was ich suche.

Hat jemand einen Lösungsansatz dafür? So eine Art von Paging ist ja wohl gang und gäbe und sollte doch mit einem CMS auch realisierbar sein.

Für Anregungen wäre ich sehr dankbar!

Gruss, Ellen Volker

Ralf Pospiech

Beitragvon Ralf Pospiech » Mi 27. Apr 2005, 14:56

Hallo,

ich hab dafür eine nette Lösung:

Code: Alles auswählen

<?php $_SESSION['counter']=1; ?>
<we:listview type="document" name="testliste" workspaceID="324" rows="10">
<we:repeat> 
<we:field name="wedoc_Path"/><br/>
</we:repeat>
<?php

for($n = 0; $n < $GLOBALS['lv']->anz_all; $n+= $GLOBALS['lv']->rows){
$GLOBALS['mylv_current_start'] = $n;
$GLOBALS['mylv_current_end'] = ($n + $GLOBALS['lv']->rows - 1 > $GLOBALS['lv']->anz_all) ? $GLOBALS['lv']->anz_all : $n + $GLOBALS['lv']->rows - 1;
$GLOBALS['mylv_current_link'] = $_SERVER['PHP_SELF'].'?we_lv_start_testliste='.($mylv_current_start);
?>


<a href="<we:var type="global" name="mylv_current_link"/>">
<?php 
echo $_SESSION['counter']++;
?>
</a>

<?php
}
?>
<we:next>next Page</we:next><br/>

 
</we:listview>

Ellen

Beitragvon Ellen » Mi 27. Apr 2005, 15:50

Hallo Herr Pospiech,

danke für die Antwort.

Ich habs mal eingebaut und es funktioniert einwandfrei. Ich muss es mir nur noch etwas anpassen und erweitern.

Inzwischen hatte ich mir zwar auch schon eine Lösung gebaut, aber Ihre ist wesentlich eleganter. Allerdings verstehe ich nicht, warum Sie für den Counter $_SESSION benutzen, das könnte doch auch eine ganz normale Variable sein, oder? Ich brauche ja keine Session, da das Paging für jede Seite neu aufgebaut wird.

Viele Grüsse, Ellen Volker

Nachtrag: Ich hab statt $_SESSION['counter'] einfach $counter eingesetzt und es funktioniert wunderbar. Das erscheint mir ein wenig logischer ;-)

Ellen

Beitragvon Ellen » Do 28. Apr 2005, 15:50

Hallo an alle,

ichhabe die obige Paging-Variante noch ein wenig ausgebaut, so dass die Ausgabe jetzt so aussieht:
Eintrag 4 bis 6 von 7 < 1 2 3 >
Die aktuelle Seite ist dabei nicht verlinkt und könnte noch fett gemacht werden. Mein Code dafür sieht so aus:

Code: Alles auswählen

<?php $counter=1; 
        
        ?>
         <we:listview order="Datum" type="document" name="News-Uebersicht" categories="/test_EV" rows="2">
         <?php
         $begin_row = $_GET['we_lv_start_News-Uebersicht'];
         $actual_page = ($begin_row / $GLOBALS['lv']->rows) + 1;
        ?>
         <tr>
           <td>Eintrag <we:listviewStart/> bis <we:listviewEnd/> von <we:listviewRows/>
           </td>
           <td>
             <we:ifBack><we:back>< </we:back></we:ifBack> 
             <?php

             for($n = 0; $n < $GLOBALS['lv']->anz_all; $n+= $GLOBALS['lv']->rows){
               $GLOBALS['mylv_current_start'] = $n;
               $GLOBALS['mylv_current_end'] = ($n + $GLOBALS['lv']->rows - 1 > $GLOBALS['lv']->anz_all) ? $GLOBALS['lv']->anz_all : $n + $GLOBALS['lv']->rows - 1;
               $GLOBALS['mylv_current_link'] = $_SERVER['PHP_SELF'].'?we_lv_start_News-Uebersicht='.($mylv_current_start);
            

               //Link bei aktueller Seite nicht anzeigen
               if ( $counter == $actual_page)  {
                 echo $counter;
               } else  {	
              ?>
            
               <a href="<we:var type="global" name="mylv_current_link"/>">
              <?php 
                echo $counter;
              ?>
               </a>

          <?php
               }//Ende if ( $counter == $actual_page)
               $counter++;
             }//ende for-Schleife
           ?>
             <we:ifNext><we:next> ></we:next></we:ifNext>
             
 
           </td>
         </tr>
         <tr>
           <td colspan="2">
            <we:repeat> 
               <we:field name="Datum" type="date" hyperlink="false" num_format="german" />

               <we:field name="Title" alt="we_path" hyperlink="on"/>

                <we:field name="News-Kurztext"/>
               

 
             </we:repeat>
</td>
</tr>
</we:listview>
Die Tabellen-Tags muss man sich natürlich wegdenken, ich bin jetzt zu faul, die alle herauszunehmen.

Als nächstes werde ich veruschen, zu programmieren, dass es einen Sprungpunkt zur ersten und zur letzten Seite gibt und dass man angeben kann, wieviele Seitenzahlen angezeigt werden. Das würde dann also so aussehen: << < ... 5 6 7 8 9 ... > >>

Wenn ich es hinbekomme, werde ich es hier auch posten. Vielelicht kann es ja mal jemand gebrauchen. Oder hat jemand eine bessere Lösung dafür?

Gruss, Ellen

Max Horváth

Beitragvon Max Horváth » Sa 30. Apr 2005, 16:53

Hallo Ellen,

hast Du zufällig schon den nächsten Versuch fertig? Sitze auch gerade an einer Lösung des Problems ;) ...

Gruß, Max!

Max Horváth

Beitragvon Max Horváth » Sa 30. Apr 2005, 17:59

So, hab es jetzt hinbekommen ...

Kann die Lösung leider nicht online stellen, da es sich so inder Form nicht einfach per Copy&Paste für andere Fälle weiterverarbeiten läßt. In der jetzigen Form brauche ich bestimmte Fälle nicht auf Fehler zu überprüfen ... in normalen Listviews könnte es aber zu Fehlern kommen ... hab z.Z. einfach nciht die Zeit, dafür Support zu geben.

Falls jemand aber an einer Listview-Navigation wie bei eBay arbeitet, könnte ich den Quelltext natürlich doch zur Verfügung stellen ...

Gruß, Max!

Ellen

Beitragvon Ellen » Mo 2. Mai 2005, 09:06

Hallo Max,

ungefähr soweit wie Du bin ich inzwischen auch gekommen, nur dass es bei mir eben anders aussieht. Was jetzt noch nicht klappt, ist eine Methode, um immer nur eine bestimmte Anzahl von Seitenzahlen ausgeben zu lassen. Also z.B. es gibt insgesamt zehn Seiten, aber es sollen nur fünf angezeigt werden. Sähe dann ungefähr so aus:
<< < 3 4 5 6 7 > >>

Aber das ist jetzt wohl wirklich ein programmiertechnisches Problem und hat nicht mehr viel mit webEdition zu tun... Aber falls einer das schon mal gelöst hat, bin ich für Anregungen sehr dankbar, ich steh' da grad etwas auf dem Schlauch...

Gruss, Ellen

ThomasGoebe

we:listviewNavigation

Beitragvon ThomasGoebe » So 30. Jul 2006, 18:15

Dieser Thread ist zwar schon etwas älter, aber da ich bei einem aktuellen Projekt erneut eine Blätternfunktion in einer Listview brauchte, möchte ich meine Lösung hier gerne vorstellen.
Ich habe für die we4 nun einen eigenen Tag <we:listviewNavigation /> geschrieben, der viele (von mir benötigten)Fälle abdeckt.
Erzeugt wird eine formatierbare Navigation für eine Listview.
Dabei können es einfache Links direkt hintereinander (type="link"), Listenelemente (type="list") oder Tabellenzellen sein (type="table").
Eine StandardNavigation kann simple eingebaut werden:

Code: Alles auswählen

<we:listview [...]>
<we:listviewNavigation />
<we:repeat>
</we:repeat>
</we:listview>
Eine Liste z.B. so:

Code: Alles auswählen

<we:listview [...]>
[LIST]<we:listviewNavigation type="list" />[/LIST]
<we:repeat>
</we:repeat>
</we:listview>
Eine Navigation der Art 1 - 10 | 11 - 20 | 21 - 30 kann man z.B. so erreichen:

Code: Alles auswählen

<we:listview [...]>
<we:listviewNavigation pageFormat=":start: - :end:" title="gehe zu Seite :#:" pastPage=" | " />
<we:repeat>
</we:repeat>
</we:listview>
Folgende Paramter stehen zur Verfügung:
type
Werte: link|list|table
Standard: link
Typ der Ausgabe

circle
Werte: true|false
Standard: false
Bei True wird eine "kreisförmige" Navigation aufgebaut. Es gibt also kein Ende, sondern am Schluss wird wieder ein Link zur ersten Seite angehängt.

range
Werte: numerisch
Standard: 0 = alle
Legt fest, wie viele Seiten vor/nach der der aktiven Seite angezeigt werden sollen. Leer oder 0 zeigt alle Seiten an

prePage
Werte: beliebiger Text
Der hier eingegebene Text wird mit Ausnahme der ersten Seite vor jeder Seite ausgegeben.

pastPage
Werte: beliebiger Text
Der hier eingegebene Text wird mit Ausnahme der letzten Seite nach jeder Seite ausgegeben.

preFirstPage
Werte: beliebiger Text
Der Text wird vor der ersten Seite angezeigt

pastLastPage
Werte: beliebiger Text
Der Text wird nach der letzten Seite angezeigt

title
Werte: beliebiger Text
Der Text wird als Title der einzelnen Seitenlinks angezeigt.
:#: wird bei der Ausgabe durch die Seitennummer ersetzt.
:start: wird bei der Ausgabe durch die Nummer des ersten Eintrags dieser Seite ersetzt
:end: wird bei der Ausgabe durch die Nummer des letzten Eintrags dieser Seite ersetzt

digits
Werte: numerisch
Legt die Anzahl der Stellen für die Seitenzahl fest.
Damit kann z.B. eine führende Null bei einstelligen Seitenzahlen ausgegeben werden.

fillChar
Werte: beliebiger Text
Standard: 0
Legt das Füllzeichen fest, mit dem Seitenzahler mit weniger als digits Stellen aufgefüllt werden. Wird nur berücksichtigt, wenn digits > 0 angegeben wurde.

link_activePage
Werte: true|false
Standard: true
Legt fest, ob die aktive Seite verlinkt werden soll

style
Werte: beliebiger Text
Styleangaben für [*]/<td> Tags. Wird nur bei type="list" oder type="table" genutzt.

activePageStyle
Werte: beliebiger Text
Styleangaben für [*]/<td> Tags der aktiven Seite. Wird nur bei type="list" oder type="table" genutzt.

class
Werte: beliebiger Text
class für [*]/<td> Tags. Wird nur bei type="list" oder type="table" genutzt.

activePageClass
Werte: beliebiger Text
Class für [*]/<td> Tags der aktiven Seite. Wird nur bei type="list" oder type="table" genutzt.

link_style
Werte: beliebiger Text
Styleangabe für den Hyperlink zu einer Seite.

link_activePageStyle
Werte: beliebiger Text
Styleangabe für den Hyperlink zu der aktiven Seite

link_class
Werte: beliebiger Text
Class für den Hyperlink zu einer Seite

link_activePageClass
Werte: beliebiger Text
Class für den Hyperlink zu der aktiven Seite

pageFormat
Werte: beliebiger Text
Format der einzelnen Seitenangabe.
:#: kann als Platzhalter für die Seitennummer genutzt werden.
"Seite :#:" gibt dann z.B. "Seite 1", "Seite 2" usw. aus.
:start: wird bei der Ausgabe durch die Nummer des ersten Eintrags dieser Seite ersetzt
:end: wird bei der Ausgabe durch die Nummer des letzten Eintrags dieser Seite ersetzt

singlePage
Werte: true|false
Standard: true
Legt fest, ob eine Ausgabe erfolgt wenn nur eine Seite vorhanden ist.

In der Zip Datei sind die benötigten Dateien, einmal für den TagWizzard und einmal der Tag selbst mit den richtigen Pfadangaben enthalten. Einfach in die entsprechenden webEdition Verzeichnisse kopieren und testen.

Ich habe das ganze natürlich getestet und denke, dass es keine Fehler hat, kann das aber nicht garantieren.

Vielleicht kann der eine oder andere mit dem Tag ja etwas anfangen, solange es noch keine we-eigene Lösung gibt.

Wenn ihr noch Verbesserungsvorschläge oder Anregungen habt, versuche ich sie gerne einzubauen.

Update am 31.07.2006:
Mit ":start:" und ":end:" stehen in title und pageFormat nun auch Platzhalter für die jeweiligen Eintragsanzahl einer Seite zur Verfügung. Damit ist eine Navigation der Art 1-10 | 11-20 | 21-30 usw. möglich.
Ein Fehler bei type="circle" behoben.

Update am 04.08.2006:
Fehler bei der Style/Class Zuweisung der aktiven Seite behoben.

Update am 20.01.2008:
Neuer Parameter singlePage hinzugefügt. Wenn bei einer Listview nur eine Seite gefunden wird, kann so die Ausgabe von listviewNavigation unterdrückt werden.

Update am 04.05.2009:
Fehler im Zusammenhang mit dem Paramter preFirstPage behoben > preFirstPage wird nun nicht mehr doppelt angezeigt
Fehler bei der Darstellung als Liste/Tabelle behoben > die einleitenden li/td werden nun auch geschlossen

Update am 09.12.2010:
Fehler im Zusammenhang mit singlePage behoben
Fehler beim Schließen öffnender li/td Tags behoben
Kompatibilität zu webEdition 6.1.0.6 > aufrufe von we_tags dürfen nur noch per we_tag() erfolgen. > Alle Aufrufe geändert.
Dateianhänge
we_tag_listviewNavigation.zip
(12.08 KiB) 360-mal heruntergeladen

ThomasGoebe

Beitragvon ThomasGoebe » Fr 4. Aug 2006, 13:35

Kleines Update an we_tag_listviewNavigation:
Fehler in der Zuordnung von Style/Class der aktiven Seite behoben. Zip aktualisiert.

jofr

Beitragvon jofr » Sa 5. Aug 2006, 17:23

Warum ist dieser Tag immer noch kein offizieller Bestandteil von WE 4.x?

JO

Benutzeravatar
kay
Senior Member
Beiträge: 356
Registriert: Do 1. Jan 1970, 02:00
Wohnort: Bremen
Kontaktdaten:

Beitragvon kay » Do 31. Aug 2006, 12:25

Richtig Klasse - warum das WE-Team das bis Heute nicht geschafft hat bleibt mir ein Rätsel.
TgO hat geschrieben: Wenn ihr noch Verbesserungsvorschläge oder Anregungen habt, versuche ich sie gerne einzubauen.
Toll fände ich es wenn man auch kleine Bilder (Icons) verwänden könnte

Also kleine Pfeile etc.

Ist aber wohl sehr aufwendig in der Umsetzung oder?
Liebe Grüße
Kay-Rafael Stemmer
http://leitbild.biz

ThomasGoebe

Beitragvon ThomasGoebe » Do 31. Aug 2006, 12:54

Hallo Kay!

Ein wenig Grafik kannst Du auch jetzt schon per CSS nutzen. Du kannst ja den Seiten in der Navigation einfach eine Hintergrundgrafik geben und so ein Icon nutzen.
Wenn Du in page_format nur ein Leerzeichen einträgst, dann wird keine Seitenzahl ausgegeben. So könntest Du auch ohne Seitenzahlen und mit Hintergrundgrafik arbeiten. Das ist natürlich nicht so sauber, aber für den Anfang sollte es gehen.

Ohne es auszuprobieren, könnte auch folgendes klappen:
<we:listviewNavigation [...] pageFormat="[img]pfad/bild:#:.jpg[/img]">
[...]

Dann müsste es natürlich für jede Nummer eine entsprechende Grafik geben bild1.jpg, bild2.jpg usw.

Ausserdem muss hier noch getestet werden, inwieweit die Sonderzeichen in pageFormat zu escapen sind bzw. ob der we-parser das überhaupt so durchleitet.
Aber einen Versuch ist es wert ;-)

Ich werde das mal ausprobieren und mir weitere Gredanken zum Thema Grafiken in der ListviewNavigation machen.

Benutzeravatar
kay
Senior Member
Beiträge: 356
Registriert: Do 1. Jan 1970, 02:00
Wohnort: Bremen
Kontaktdaten:

Beitragvon kay » Do 31. Aug 2006, 14:22

TgO hat geschrieben:Hallo Kay!

Ohne es auszuprobieren, könnte auch folgendes klappen:
<we:listviewNavigation [...] pageFormat="[img]pfad/bild:#:.jpg[/img]">
[...]

Ausserdem muss hier noch getestet werden, inwieweit die Sonderzeichen in pageFormat zu escapen sind bzw. ob der we-parser das überhaupt so durchleitet.
Aber einen Versuch ist es wert ;-)
Hi TgO,
das war ja eine schnelle Antwort.

Ich habe die zweite Version gleich ausprobiert. Geht leider nicht. :-(

Wie escapt man denn in WE richtig?
Liebe Grüße
Kay-Rafael Stemmer
http://leitbild.biz

ThomasGoebe

Beitragvon ThomasGoebe » Do 31. Aug 2006, 22:34

Hallo kay!

Folgendes funktioniert bei einem kurzen Test:

Code: Alles auswählen

<we:listviewNavigation pageFormat="<img src='http://pfad/bild:#:.jpg' />" />
Wichtig dabei ist natürlich, dass es wirklich für alle Seiten eine Grafik gibt. Wenn Du hundert Seiten erwartest, dann muss es auch hundert Grafiken geben....

Benutzeravatar
kay
Senior Member
Beiträge: 356
Registriert: Do 1. Jan 1970, 02:00
Wohnort: Bremen
Kontaktdaten:

Beitragvon kay » Fr 1. Sep 2006, 12:12

TgO hat geschrieben: Wichtig dabei ist natürlich, dass es wirklich für alle Seiten eine Grafik gibt. Wenn Du hundert Seiten erwartest, dann muss es auch hundert Grafiken geben....
Moin TgO,
das hat geklappt, ich habe nur die Nummer weggelassen da ich für alle Dateinen ein einfaches Dokumenten Icon verwende.

Du kann Dir ja mal die bisherige Seite anschauen: http://www.kai-juenemann.com/people/20.php
Liebe Grüße
Kay-Rafael Stemmer
http://leitbild.biz


Zurück zu „Basisversion“

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 10 Gäste