Nach Update nach 8.1.1: Templatefehler

Fragen zum Erstellen von Templates für webEdition.
diballa
Senior Member
Beiträge: 135
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: 2997
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: 135
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: 2997
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: 135
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: 135
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: 2997
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: 135
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


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

Wer ist online?

Mitglieder in diesem Forum: MSN [Bot] und 5 Gäste