Einzelne Seiten einer Listview gezielt ansteuern?

Fragen zum Erstellen von Templates für webEdition.
Andrea Arndt

Einzelne Seiten einer Listview gezielt ansteuern?

Beitragvon Andrea Arndt » Fr 25. Jul 2003, 15:05

Hallo, allerseits,

ist es möglich, die einzelnen Seiten (mit z. B. 20 Treffern pro Seite) einer sehr langen Listview type=object (> 600 Objekte) einzeln anzusteuern?

Ich stelle mir etwas in der Art vor:
< zurück - Seite 1, 2, 3, 4, ... - weiter >
bin aber bisher nicht fündig geworden.

Ich freue mich über jeden Tipp!
Ein schönes Wochenende wünscht
Andrea Arndt

Dirk Einecke
Senior Member
Beiträge: 3735
Registriert: Do 1. Jan 1970, 02:00
Wohnort: Karlsruhe
Kontaktdaten:

Beitragvon Dirk Einecke » Mi 20. Aug 2003, 07:59

Hi.

Mit we:Tags selbst ist das nicht möglich. Ich habe aber für mich selber mal ein Tag dazu geschreiben. Wenn Sie Interesse und ausreichend PHP-Wissen haben, dann können Sie den Quelltext des Tags haben.

Andrea Arndt

Beitragvon Andrea Arndt » Mi 20. Aug 2003, 09:00

Danke,
Interesse hätte ich schon, allein, mir fehlt die PHP-Kenntnis. :-?

Gibt's eine Chance, Ihre Lösung in eine der kommenden we-Versionen zu integrieren?

Wenn nicht, dann hätte ich doch gern den Code, damit ich mich in Musestunden mal hineinknien kann. Bin nämlich ziemlich sicher, dass diese Anforderung bei uns kommen wird ...

Viele Grüße aus Frankfurt,
Andrea Arndt

Dirk Einecke
Senior Member
Beiträge: 3735
Registriert: Do 1. Jan 1970, 02:00
Wohnort: Karlsruhe
Kontaktdaten:

Beitragvon Dirk Einecke » Mi 20. Aug 2003, 09:08

Hi.

Dolch ein Tag wird auf jeden Fall kommen. Wann? Kann man nicht sagen. Ich habe das Tag bei mir in der allgemeinen Datei drin, wo alle anderen tags sin. Wenn ein Update gemacht wird, ist das natürlich wieder weg. Wenn es sehr dringend ist und unbedingt sein muss kann ich das auch als einzelne we:Tag-Datei basteln. Nun ja - wie auch immer - hier mal der Code von dem Tag:

Code: Alles auswählen

function we_tag_listviewNumbers($attribs,$content)
{
	$we_anz_all = abs($GLOBALS["we_anz_all"]);
	$we_start = abs($GLOBALS["we_start"]);
	$we_rows = (isset($GLOBALS["we_rows"]) << $GLOBALS["we_rows"] != 0) ? abs($GLOBALS["we_rows"]) : $we_anz_all;
	$target = $attribs["target"] ? ' target="'.$attribs["target"].'"' : '';
	$sep = !$attribs["separator"] ? " - " : $attribs["separator"];
	$highlight = ($attribs["highlight"] == "true") ? true : false;
	$hyperlink = ($attribs["hyperlink"] == "true") ? true : false;
	$class = $attribs["class"] ? ' class="'.$attribs["class"].'"' : '';
	$style = $attribs["style"] ? ' style="'.$attribs["style"].'"' : '';
	$selectedclass = $highlight ? ($attribs["selectedclass"] ? ' class="'.$attribs["selectedclass"].'"' : '') : $class;
	$selectedstyle = $highlight ? ($attribs["selectedstyle"] ? ' style="'.$attribs["selectedstyle"].'"' : '') : $style;
	$out = "";
	$page = 0;
	for($i = 1; $i <= ceil($we_anz_all/$we_rows); $i++)
	{
		$out .= ($we_start != $page || $hyperlink) ? ('<a href="'.($GLOBALS["WE_ACTION"] ? $GLOBALS["WE_ACTION"] : $GLOBALS["PHP_SELF"]).'?'.we_makeQueryString("we_start=$page").'"'.($attr ? " $attr" : '').(($we_start == $page << $highlight) ? $selectedclass.$selectedstyle : $class.$style).$target.'>') : ""; /* Link tag start */
		$out .= ($we_start == $page << !$hyperlink << $highlight) ? '<span'.$selectedclass.$selectedstyle.'>' : ''; /* No link highlight format start */
		$out .= $i; /* The number */
		$out .= ($we_start == $page << !$hyperlink << $highlight) ? '</span>' : ''; /* No link highlight format end */
		$out .= ($we_start != $page || $hyperlink) ? '</a>' : ''; /* Link tag end */
		$out .= ($we_rows * $i < $we_anz_all) ? $sep : ""; /* Add seperator after number - but not after the last number */
		$page += $we_rows;
	}
	return $out;
}
Und eingebunden wird es so in der Vorlage:

Code: Alles auswählen

<we:listviewNumbers class="t5" style="background-color: #99CC66;" selectedclass="t5s" selectedstyle="background-color: #FF00FF;" separator=" - " highlight="true" hyperlink="true" target="_self" />
Ein Beispiel wie es aussehen könnte:
http://www.session-destroy.de/we_demo_2/news/index.php

Andrea Arndt

Beitragvon Andrea Arndt » Fr 5. Sep 2003, 13:30

Moin, Herr Einecke,

klasse, danke für das Tag. Hab es als php-Datei (we_tag_listviewNumbers.php) ins Verzeichnis webEdition/we/include/we_tags gespeichert (war doch richtig, oder?)

Jedenfalls funktioniert's wunderbar :-)
Bin begeistert - und meine Anwender auch!

Liebe Grüße,
Andrea Arndt

ps: Anzusehen unter dem URL
http://smirnoff.rz.uni-frankfurt.de/bib ... ategorien/ (einfach einen Link aus der Liste mit den Pfeilen auswählen)

marhoe

Beitragvon marhoe » Mo 3. Nov 2003, 12:51

Guten Tag!

Ich habe ebenfalls diesen Tag im Einsatz, nur meine PHP Kenntnisse sind leider bescheiden, daher meine Frage:
Was muss in dem Code verändert werden, damit die Nummern zb in Klammern ausgegeben werden?
Das kann ich nicht mit einem Seperator machen, da die ausgewählte Nummer inkl. Klammern anders formatiert sein soll als die anderen.

mfg

Dirk Einecke
Senior Member
Beiträge: 3735
Registriert: Do 1. Jan 1970, 02:00
Wohnort: Karlsruhe
Kontaktdaten:

Beitragvon Dirk Einecke » Mo 3. Nov 2003, 13:50

Hi.
marhoe hat geschrieben:Ich habe ebenfalls diesen Tag im Einsatz, nur meine PHP Kenntnisse sind leider bescheiden, daher meine Frage:
Was muss in dem Code verändert werden, damit die Nummern zb in Klammern ausgegeben werden?
Das kann ich nicht mit einem Seperator machen, da die ausgewählte Nummer inkl. Klammern anders formatiert sein soll als die anderen.
Sorry - aber ich kann leider aus Zeitgründen sowas jetzt nicht machen da es ja nicht wirklich ein Tag von webEdition ist. Aber eventuell finde ich ja mal irgendwann mal die Zeit um das anzupassen oder jemand aus dem Forum hier kömmert sich darum.

marhoe

Beitragvon marhoe » Mo 3. Nov 2003, 14:25

OK, die Lösung ist eigentlich einfach:

Die Zeile
$out .= $i;
ist entsprechend zu ändern.

In meinem Fall also
$out .= '['.$i.']';
Dann ist das Ergebnis [1] [2] [3]

mfg

marhoe

Beitragvon marhoe » Mi 18. Feb 2004, 17:55

Hallo!

Ich habe auf Version 3 aktualisiert und würde nun gerne wissen, wie ich dieses Tag wieder verwenden kann.

Wenn ich den Code als we_tag_listviewNumbers.inc.php ins Verzeichnis webEditionweincludewe_tags kopier (so wie es bei Version 2 geklappt hat), tut sich nichts.

Danke
mfg

marhoe

Beitragvon marhoe » Do 19. Feb 2004, 12:14

Wirds dieses Tag in absehbarer Zeit für WE3 geben?

Andrea Arndt

Beitragvon Andrea Arndt » Mo 23. Feb 2004, 16:54

Hallo, allerseits,

ja, das würde mich auch interessieren.

Schöne Grüße,
Andrea Arndt

Dirk Einecke
Senior Member
Beiträge: 3735
Registriert: Do 1. Jan 1970, 02:00
Wohnort: Karlsruhe
Kontaktdaten:

Beitragvon Dirk Einecke » Mo 23. Feb 2004, 17:10

Hi.

Dieses Tag wird es geben, aber wann genau können wir leider noch nicht sagen.

Der von mir gepostete Quellcode ist nicht für die Version 3 geeignet, da sich hier einige interne Änderungen ergeben haben und der Code darauf angepasst werden muss.

ArminSchulz
Senior Member
Beiträge: 250
Registriert: Do 1. Jan 1970, 02:00
Wohnort: Berlin
Kontaktdaten:

Version für we3

Beitragvon ArminSchulz » Mo 26. Apr 2004, 08:19

Hallo,
ich habe mal eine Version der listviewNumbers gemacht, die für we3 funktioniert.
Allerdings ohne die Nutzung von we_makeQueryString() im Link, da ich den Sinn nicht ganz verstanden habe. Vielleicht kann einer der we-Leute mich ja mal aufklären.
Diese Version hat als zusätzliche Attribute "beforelink" und "afterlink" um z.B. "[" und "]" um die Linkzahlen zu platzieren. Das Attribut "maxpages" beschränkt die Zahl der dargestellten Links auf maxpages vor und nach der dargestellten Seite, damit nicht ein Layout durch zu viele Links zerstört wird.
Um für den Fall vorzusorgen, dass es mal ein offizielles Tag mit dem gleichen Namen, aber anderen Attributen gibt, stelle ich jeweils ein MY vor den Tag-Namen.
Hier nun die Funktion:

Code: Alles auswählen

<?php

if($GLOBALS["WE_TAG_WIZZARD"]){
	$GLOBALS["we_tag"]["description"] = "Erzeugt durchnummerierte Liste der Seiten einer Listview";
	$GLOBALS["we_tag"]["attribs"]["class"]["required"] = 0;
	$GLOBALS["we_tag"]["attribs"]["style"]["required"] = 0;
	$GLOBALS["we_tag"]["attribs"]["hyperlink"]["required"] = 0;
	$GLOBALS["we_tag"]["attribs"]["hyperlink"]["predefined"] = "true,false";
	$GLOBALS["we_tag"]["attribs"]["highlight"]["required"] = 0;
	$GLOBALS["we_tag"]["attribs"]["highlight"]["predefined"] = "true,false";
	$GLOBALS["we_tag"]["attribs"]["selectedclass"]["required"] = 0;
	$GLOBALS["we_tag"]["attribs"]["selectedstyle"]["required"] = 0;
	$GLOBALS["we_tag"]["attribs"]["separator"]["required"] = 0;
	$GLOBALS["we_tag"]["attribs"]["beforelink"]["required"] = 0;
	$GLOBALS["we_tag"]["attribs"]["afterlink"]["required"] = 0;
	$GLOBALS["we_tag"]["attribs"]["maxpages"]["required"] = 0;
	$GLOBALS["we_tag"]["attribs"]["target"]["required"] = 0;
	$GLOBALS["we_tag"]["attribs"]["default"]["required"] = 0;
	$GLOBALS["we_tag"]["attribs"]["default"]["name"] = $l_we_tag["default"];
	$GLOBALS["needs_endtag"] = 0;
}


function we_tag_MYlistviewNumbers($attribs,$content)
{
   $we_anz_all = abs($GLOBALS["lv"]->anz_all);
   $we_start = abs($GLOBALS["lv"]->start);
   $we_rows = (isset($GLOBALS["lv"]->rows) << $GLOBALS["lv"]->rows != 0) ? abs($GLOBALS["lv"]->rows) : $we_anz_all;
   $target = $attribs["target"] ? ' target="'.$attribs["target"].'"' : '';

   $maxpages = !$attribs["maxpages"] ? "0": $attribs["maxpages"]; //max. Anzahl der dargestellten Zahlen um die zu sehende Seite
   $beforelink = !$attribs["beforelink"] ? "" : $attribs["beforelink"]; //wird vor jeder Zahl dargestellt, z.B. [
   $afterlink = !$attribs["afterlink"] ? "" : $attribs["afterlink"]; //wird nach jeder Zahl dargestellt, z.B. ]
   $sep = !$attribs["separator"] ? "" : $attribs["separator"];  // Separator zwischen den Links, z.B. " - "
   $highlight = ($attribs["highlight"] == "true") ? true : false; // Bei true wird die gerade zu sehende Seite mit selectedclass bzw. selectedstyle dargestellt
   $hyperlink = ($attribs["hyperlink"] == "true") ? true : false; // Bei true erhält die gerade zu sehende Seite auch einen Link auf sich selbst
   $class = $attribs["class"] ? ' class="'.$attribs["class"].'"' : '';
   $style = $attribs["style"] ? ' style="'.$attribs["style"].'"' : '';
   $selectedclass = $highlight ? ($attribs["selectedclass"] ? ' class="'.$attribs["selectedclass"].'"' : '') : $class;
   $selectedstyle = $highlight ? ($attribs["selectedstyle"] ? ' style="'.$attribs["selectedstyle"].'"' : '') : $style;

   if (!$maxpages) {$end =ceil($we_anz_all/$we_rows);$start = 1;$page=0;} else {
    if ( ceil(($we_start+(($maxpages+1)*$we_rows))/$we_rows) <= ceil($we_anz_all/$we_rows) )
      {$end = ceil( ($we_start+(($maxpages+1)*$we_rows))/ $we_rows);} else {$end = ceil($we_anz_all/$we_rows);}
    if (ceil(($we_start-($maxpages*$we_rows))/$we_rows)+1 >=1) {$start = ceil(($we_start-($maxpages*$we_rows))/$we_rows)+1; $page= $we_start-($maxpages*$we_rows); } else {$start = 1;$page=0;}
   }

   $out = "";
   for($i = $start; $i <= $end; $i++)
   {
   	  //im href wurde we_makeQueryString() entfernt, da Funktion scheinbar unnötig bzw Sinn nicht verstanden

      $out .= $beforelink; // vor dem Link
      $out .= ($we_start != $page || $hyperlink) ? ('<a href="'.($GLOBALS["WE_ACTION"] ? $GLOBALS["WE_ACTION"] : $GLOBALS["PHP_SELF"]).'?'.'we_lv_start_'.$GLOBALS["lv"]->name."=$page".'"'.($attr ? " $attr" : '').(($we_start == $page << $highlight) ? $selectedclass.$selectedstyle : $class.$style).$target.'>') : "";

      $out .= ($we_start == $page << !$hyperlink << $highlight) ? '<span'.$selectedclass.$selectedstyle.'>' : ''; /* No link highlight format start */
      $out .= $i; /* The number */
      $out .= ($we_start == $page << !$hyperlink << $highlight) ? '</span>' : ''; /* No link highlight format end */
      $out .= ($we_start != $page || $hyperlink) ? '</a>' : ''; /* Link tag end */

      $out .= $afterlink; // nach dem Link
      $out .= ($we_rows * $i < $we_anz_all) ? $sep : ""; /* Add seperator after number - but not after the last number */
      $page += $we_rows;
   }
   return $out;
}
?>
Wenn man das Obige in webEdition/we/include/we_tags/we_tag_MYlistviewNumbers.inc.php abspeichert, sollte es sogar im Tag-Wizard auftauchen.

Zwei weitere Tags zum selben Thema:
Um Ringlisten zu erstellen fehlt ein we:first und we:last, also Tags die immer auf die erste und letzte Seite einer Listview zeigen. Also z.B. für Konstruktionen wie:

Code: Alles auswählen

<we:ifNext><we:next>weiter</we:next><we:else/><we:MYfirst>weiter zum Ersten</we:MYfirst></we:ifNext>
Hier die beiden Dateien:

Code: Alles auswählen

<?php

if($GLOBALS["WE_TAG_WIZZARD"]){
	$GLOBALS["we_tag"]["description"] = "Link auf den ersten Listview Eintrag";
	$GLOBALS["we_tag"]["attribs"]["class"]["required"] = 0;
	$GLOBALS["we_tag"]["attribs"]["style"]["required"] = 0;
	$GLOBALS["we_tag"]["attribs"]["target"]["required"] = 0;
	$GLOBALS["we_tag"]["attribs"]["default"]["required"] = 0;
	$GLOBALS["we_tag"]["attribs"]["default"]["name"] = $l_we_tag["default"];
	$GLOBALS["needs_endtag"] = 1;
}
function we_tag_MYfirst($attribs,$content){
	$target = $attribs["target"] ? ' target="'.$attribs["target"].'"' : '';
	$class = $attribs["class"] ? ' class="'.$attribs["class"].'"' : '';
	$style = $attribs["style"] ? ' style="'.$attribs["style"].'"' : '';
	$page = 0;
    $out = "";
    $out .= '<a href="'.($GLOBALS["WE_ACTION"] ? $GLOBALS["WE_ACTION"] : $GLOBALS["PHP_SELF"]).'?'.'we_lv_start_'.$GLOBALS["lv"]->name."=$page".'"'.($attr ? " $attr" : '').$class.$style.$target.'>';
    $out .= $content;
    $out .= '</a>';
    return $out;


}
?>
und

Code: Alles auswählen

<?php

if($GLOBALS["WE_TAG_WIZZARD"]){
	$GLOBALS["we_tag"]["description"] = "Link auf den letzten Listview Eintrag";
	$GLOBALS["we_tag"]["attribs"]["class"]["required"] = 0;
	$GLOBALS["we_tag"]["attribs"]["style"]["required"] = 0;
	$GLOBALS["we_tag"]["attribs"]["target"]["required"] = 0;
	$GLOBALS["we_tag"]["attribs"]["default"]["required"] = 0;
	$GLOBALS["we_tag"]["attribs"]["default"]["name"] = $l_we_tag["default"];
	$GLOBALS["needs_endtag"] = 1;
}
function we_tag_MYlast($attribs,$content){
	$target = $attribs["target"] ? ' target="'.$attribs["target"].'"' : '';
	$class = $attribs["class"] ? ' class="'.$attribs["class"].'"' : '';
	$style = $attribs["style"] ? ' style="'.$attribs["style"].'"' : '';
	$we_anz_all = abs($GLOBALS["lv"]->anz_all);
	$we_rows = (isset($GLOBALS["lv"]->rows) << $GLOBALS["lv"]->rows != 0) ? abs($GLOBALS["lv"]->rows) : $we_anz_all;

	$page = floor($we_anz_all/$we_rows)*$we_rows;
    $out = "";
    $out .= '<a href="'.($GLOBALS["WE_ACTION"] ? $GLOBALS["WE_ACTION"] : $GLOBALS["PHP_SELF"]).'?'.'we_lv_start_'.$GLOBALS["lv"]->name."=$page".'"'.($attr ? " $attr" : '').$class.$style.$target.'>';
    $out .= $content;
    $out .= '</a>';
    return $out;
}

?>
Auch hier gilt es, die beiden in webEdition/we/include/we_tags/we_tagMY*.inc.php abzuspeichern.

Natürlich kein Support, aber ich bin für Fehlerhinweise, Verbesserungsvorschläge usw. dankbar.
Viel Spass damit
Armin Schulz
Dr. Armin Schulz

Astendo GmbH
www.astendo.de

Benutzeravatar
eSKa
Senior Member
Beiträge: 557
Registriert: Do 1. Jan 1970, 02:00

Beitragvon eSKa » Mi 26. Mai 2004, 11:04

im ersten Code zum Tag we_tag_MYlistviewNumbers

ich habe diesen Code eingebunden und der funktionierte auch. Wenn ich allerdings die Kategorie bzw. den DocType dynamisch übergebe, werden die Variablen bei Klick auf eine Seitenzahl verworfen. Daraufhin wird einfach alles, eben ohne Berücksichtigung der Spezifizierung Kategorie/DocType angezeigt.

Sind diese Angaben fest in den listview-Tag eingetragen funktioniert es aber einwandfrei.
:D

piXel relations GmbH | Agentur für Online-Kommunikation
Luxemburger Str. 93 | 50354 Hürth
Telefon 0 22 33 / 99 66 81
www.pixelrelations.de | info@pixelrelations.de

markus.hofmann

Beitragvon markus.hofmann » Di 20. Jul 2004, 10:54

Kann mir jemand erklären, wofür in Zeile 54

Code: Alles auswählen

($attr ? " $attr" : '')
steht? Diese Variable ist im Code sonst nirgends zu finden. Geh ich also recht in der Annahme, dass dieser Teil einfach gelöscht werden kann?


Zurück zu „webEdition Templates erstellen (we:Tags)“

Wer ist online?

Mitglieder in diesem Forum: Ahrefs [Bot], Google [Bot] und 4 Gäste