Nach Update nach 8.1.1: Templatefehler

Fragen zum Erstellen von Templates für webEdition.
diballa
Senior Member
Beiträge: 159
Registriert: Mo 17. Okt 2005, 15:58

Nach Update nach 8.1.1: Templatefehler

Beitragvon diballa » Mi 12. Feb 2020, 13:16

Hallo liebe WE-Gemeinde,

nach eigentlich erfolgrichem Update von 6.4.1 über 7.0.4 nach 8.1.1 produzieren einige Templates Errors im Protokoll.
Dies bezieht sich auf Listviewdarstellungen, bei denen weTags mit PHP angereichert sind.
Hier mal ein Fehler aus dem LOG:

Error type: Error

Error message:

Cannot access protected property we_listview_document::$anz_all
Array
(
[type] => 1
[message] => Cannot access protected property we_listview_document::$anz_all
[file] => SECURITY_REPL_DOC_ROOT//webEdition/we/templates/15_layouts/17_produkte_tt_absperrarmaturen-eck.php
[line] => 273
)

Da ich das seinerzeit nicht selbst gescriptet habe, bin ich n büschen ratlos ..
Kann mir jemand mit PHP-Erfahrung helfen?

Danke und LG
diballa

mokraemer
Senior Member
Beiträge: 3619
Registriert: So 8. Aug 2010, 01:23
Wohnort: Mainz

Re: Nach Update nach 8.1.1: Templatefehler

Beitragvon mokraemer » Mi 12. Feb 2020, 13:32

darauf kannst du nicht mehr zugreifen.
Entweder kannst du getMaxPages() für die Gesamtzahl Seiten, getPageNo() für die akt. Seite oder getRows() für das was hier mal (falsch) abgefragt wurde nutzen
webEdition-Kern-Entwickler

diballa
Senior Member
Beiträge: 159
Registriert: Mo 17. Okt 2005, 15:58

Re: Nach Update nach 8.1.1: Templatefehler

Beitragvon diballa » Mi 12. Feb 2020, 18:06

Hi mokraemer,

habe jetzt in der Paginierung die Anzahl der Gesamteinträge durch

Code: Alles auswählen

<?php echo " $translationOf " . $GLOBALS['lv']->getRows();?>
wieder drin:-)

Ich habe jetzt an einer anderen Stelle nochmal dieses "anz_all":

Man kann sich nach Auswahl verschiedener Kategorien die zutreffenden Produkte in einer listview anzeigen lassen. Wenn eine Kombination keine Treffer hat, wurde bisher ein Text ausgegeben mit:

Code: Alles auswählen

<?php
if(!$lv->anz_all){
	echo "<div><br><br><b>Leider ergab Ihre Auswahl keine Treffer. Bitte versuchen Sie eine andere Kombination.</b></div>";
}
?>
Wie muss ich das hier unter Einsatz von z.B. getRows() genau schreiben? Wie muss die Alternative aussehen?

Kannst du mir n Tipp geben?
Danke und LG diballa

mokraemer
Senior Member
Beiträge: 3619
Registriert: So 8. Aug 2010, 01:23
Wohnort: Mainz

Re: Nach Update nach 8.1.1: Templatefehler

Beitragvon mokraemer » Mi 12. Feb 2020, 19:06

$lv und $GLOBALS['lv'] ist beides deprecated.

Aber du bekommst das eigentlich ganz normal per we-tag:

Code: Alles auswählen

<we:listviewRows/>
Also in deinem Fall

Code: Alles auswählen

 <?=$translationOf;?> <we:listviewRows/>
und das andere ist eigentlich ein

Code: Alles auswählen

<we:ifNotFound>Leider...</we:ifNotFound>
Und so kommst du da eigentlich ganz ohne php aus.
webEdition-Kern-Entwickler

diballa
Senior Member
Beiträge: 159
Registriert: Mo 17. Okt 2005, 15:58

Re: Nach Update nach 8.1.1: Templatefehler

Beitragvon diballa » Do 13. Feb 2020, 12:12

Hallo mokraemer,

das Leben kann manchmal so schön sein:-)
Danke.
Habe noch ein anderes Problem in dem Template, muss ich aber noch fürs Forum aufbereiten;-)

Erstmal Danke und LG, diballa

diballa
Senior Member
Beiträge: 159
Registriert: Mo 17. Okt 2005, 15:58

Re: Nach Update nach 8.1.1: Templatefehler Listview

Beitragvon diballa » Do 13. Feb 2020, 14:07

Hallo,

es geht um ein Template, welches im Frontend eine Listview über Dokumente einer bestimmten Oberkategorie auswirft.
Auf der Seite hat der User dann Filtermöglichkeiten nach Unterkategorien obiger Kategorie und kann sich so Listviews mit weniger Treffern anzeigen lassen.

Zuerst werden Selectboxen mit den Filtermöglichkeiten erzeugt:

Code: Alles auswählen

<we:form action="$translationListAnker" style="padding:0; margin:0;">
				<fieldset>
					<we:listview type="category" name="katlist" parentid="$translationParentId">
						<?php
						$catcount = 0;
						?>
						<we:repeat>
							<?php
							$katpath = we_tag("field", array("type"=>"text","name"=>"WE_PATH"), "") . '/';
							$kattop = we_tag("field", array("type"=>"text","name"=>"WE_PATH"), "");
							$katname = "category[]";
							$catcount++;
							$katfirstentry = substr($kattop,strrpos($kattop,"/")+1).":";
							?>
							<we:categorySelect name="\$katname" type="request" showpath="true" rootdir="\$katpath" firstentry="\$katfirstentry" style="width:178px; margin-bottom:10px;"></we:categorySelect>
						</we:repeat>
					</we:listview>
					<input type="submit" value="<we:var type="global" name="translationSearchSubmit" />" class="send" />
				</fieldset>
			</we:form>
Dann werden Variablen gesetzt, abhängig davon, wieviele Selectboxen es gibt:

Code: Alles auswählen

	<we:setVar from="request" to="global" namefrom="category[0]" nameto="category[0]"/>
	<we:setVar from="request" to="global" namefrom="category[1]" nameto="category[1]"/>
	<we:setVar from="request" to="global" namefrom="category[2]" nameto="category[2]"/>
Und dann wird, abhängig davon, ob die Variable leer ist oder nicht, die Trefferliste angezeigt:
Wenn leer, soll die Listview über die Oberkategorie angezeigt werden, also, wenn man auf die Seite kommt ...

Code: Alles auswählen

<we:ifVarEmpty name="category" match="category" type="global">
				<we:listview name="$translationListName" type="document" categories="$translationListCategories" rows="20" order="Title">
					<we:repeat>
...
					</we:repeat>
				</we:listview>
		</we:ifVarEmpty>
Wenn nicht leer wird die Listview gemäß der ausgewählten Kategorien in den Selectboxen angezeigt:

Code: Alles auswählen

<we:ifVarNotEmpty name="category" match="category" type="global">
			<?php
			$selectedcats = "";
			$selectedcats_info = "";
			foreach($_REQUEST['category'] as $catval) {
				if($catval!=""){
					$selectedcats .= $selectedcats=="" ? $catval : ",".$catval;
					$catval_info =  preg_replace("/.*\//", "", $catval);
					$selectedcats_info .= $selectedcats_info =='' ? $catval_info : ",&nbsp;$catval_info";
				}
			}
			echo "<h3>$translationSearchfilter: $selectedcats_info</h3>\n";
			?>
			<we:listview categories="\$selectedcats" rows="20" order="Title" catOr="false">
				<we:ifNotFound><div><br><br><b>Leider ergab Ihre Auswahl keine Treffer. Bitte versuchen Sie eine andere Kombination.</b></div></we:ifNotFound>
				<we:repeat>
...
				</we:repeat>
			</we:listview>

		</we:ifVarNotEmpty>
Wenn man nun auf die Seite kommt, wird zwar eine Listview angezeigt, allerdings über sämtliche Kategorien (Paginierung zeigt: Seite: 1 von 77 | Einträge: 1 bis 20 von 1524 | weiter) und ohne Inhalt. Wählt man nun eine Filtermöglichkeit, erscheint die korrekte Listview.

Der Teil mit leerer Variable funzt in 8.1.1 leider nicht mehr. Wahrscheinlich hat das auch mit den globalen Variablen zu tun?
Kann mir jemand helfen? Danke und LG, diballa

mokraemer
Senior Member
Beiträge: 3619
Registriert: So 8. Aug 2010, 01:23
Wohnort: Mainz

Re: Nach Update nach 8.1.1: Templatefehler

Beitragvon mokraemer » Do 13. Feb 2020, 15:14

kann es sein das hier etwas vermischt ist?

Code: Alles auswählen

<we:ifVarNotEmpty name="category" match="category" type="global">
[...]
foreach($_REQUEST['category'] as $catval) {
Entweder global oder request, ich vermute du meinst

Code: Alles auswählen

<we:ifVarNotEmpty name="category" match="category" type="request">
es ist eher ungewöhnlich das man Request-Variablen in Global schreibt und AFAIK seit PHP 5.4 deprecated.

Btw. das Tag we:listview kennt den Parameter categoryids, dann mußt du hier keine seltsamen escapes von den Namen mehr machen!
webEdition-Kern-Entwickler

diballa
Senior Member
Beiträge: 159
Registriert: Mo 17. Okt 2005, 15:58

Re: Nach Update nach 8.1.1: Templatefehler

Beitragvon diballa » Do 13. Feb 2020, 16:30

Hi mokraemer,
danke für das schnelle Feedback:-)

Deine Vermutung war goldrichtig.
Jetzt klappts.

Noch ne Bitte um eine Expertenmeinung:
Wenn du dir den Code so generell anschaust, ist das eher veraltet und deprecated oder ok?

Kleines Feedback würd' mich freuen;-)
LG, diballa

diballa
Senior Member
Beiträge: 159
Registriert: Mo 17. Okt 2005, 15:58

Re: Nach Update nach 8.1.1: Templatefehler

Beitragvon diballa » Do 20. Feb 2020, 11:33

Moinsen,
ne Kleinigkeit klappt doch noch nicht:

Wenn die Seite das erste Mal geladen wird, tritt der Teil mit ifVarEmpty in Kraft. Super:-)
Wenn ich dann eine Auswahl über die erzeugten Selectboxen treffe, werden die Trefferlisten richtig gefiltert (ifVarNotEmpty-Fall). Super:-)

Wenn ich das Formular aber absende, ohne eine Auswahl in den Selectboxen zu treffen, tritt wieder der ifvarNotEmpty-Fall ein und ich bekomme eine Listview allerdings über sämtliche Kategorien (Paginierung zeigt: Seite: 1 von 77 | Einträge: 1 bis 20 von 1524 | weiter) aber ohne Inhalt.
Wie kann ich erreichen, dass bei Absenden des Formulars ohne Auswahl in den Selectboxen der ifVarEmpty-Fall eintritt und ich die Situation erreiche, als die Seite aufgerufen wurde?
Bin wirklich für jede Hilfe dankbar.

LG, diballa

mokraemer
Senior Member
Beiträge: 3619
Registriert: So 8. Aug 2010, 01:23
Wohnort: Mainz

Re: Nach Update nach 8.1.1: Templatefehler

Beitragvon mokraemer » Do 20. Feb 2020, 11:47

Naja, was ist denn der "Default-Fall" in der Selectbox?
Mir fehlt grad ein Beispiel um mir das anschauen zu können.
webEdition-Kern-Entwickler

diballa
Senior Member
Beiträge: 159
Registriert: Mo 17. Okt 2005, 15:58

Re: Nach Update nach 8.1.1: Templatefehler

Beitragvon diballa » Mi 26. Feb 2020, 10:55

Hi mokraemer,

sorry für die späte Rückmeldung, lag n paar Tage flach ...

Hier mal ein Shortlink zu einer Beispielseite, die noch unter webEdition 6.4.1 läuft und wo das funktioniert:

https://bit.ly/32rkpnz

1. Wenn du auf die Seite kommst, wird eine default listview gezeigt.
2. Wenn du über die Pullies filterst, bekommst du die entsprechende Auswahl.
3. Wenn du auf Armaturen zeigen, ohne etwas in den Pullies auszuwählen, klickst, bekommst du wieder die Ausgangsliste (default listview)

Auf dem Testserver, auf dem die Seite unter webEdition 8.1.1 läuft, funktioniert Schritt 3 nicht (leere Listview aber über alle Kategorien lt. Paginierung)

LG, diballa

mokraemer
Senior Member
Beiträge: 3619
Registriert: So 8. Aug 2010, 01:23
Wohnort: Mainz

Re: Nach Update nach 8.1.1: Templatefehler

Beitragvon mokraemer » Mi 26. Feb 2020, 12:11

hmm, kann ich hier so einfach nicht nachvollziehen.
Die Auswahl ist ja Leer, also wird auch ifVarEmpty zutreffen.
webEdition-Kern-Entwickler

diballa
Senior Member
Beiträge: 159
Registriert: Mo 17. Okt 2005, 15:58

Re: Nach Update nach 8.1.1: Templatefehler

Beitragvon diballa » Do 27. Feb 2020, 14:05

Hi mokraemer,

ja sollte man meinen und unter PHP 5.5.9 und webEdition 6.4.1 funktioniert das wie man sieht ja auch.
Ich hab mal n Screenshot drangehängt vom Ergebnis wenn man keine Auswahl in den Pullies macht und das Formular abschickt (PHP 7.3.14 und webEdition 8.1.1. Auffällig ist, dass hier der Bereich "Suchfilter:" angezeigt wird, eigentlich kommt der nur im ifVarNotEmpty-Fall ...
Bildschirmfoto 2020-02-27 um 12.54.27.png
Bildschirmfoto 2020-02-27 um 12.54.27.png (42.22 KiB) 3771 mal betrachtet

LG, diballa


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

Wer ist online?

Mitglieder in diesem Forum: Ahrefs [Bot] und 10 Gäste