Template Schleifen mit Filter und break

08.09.2025 18:56
avatar  Mike48
#1 Template Schleifen mit Filter und break
avatar
Mitglied

Ich habe miczh schon mehrfach mit den Template Schleifen beschäftigt.
Die Infos in "Dokumentation der Xobor Plugin API" und "Funktionsunterstützung" sind sehr dürftig.
Es geht vor Allem darum, Filter zu verwenden um einen bestimmten Eintrag zu finden und die Schleife zu beenden wenn der Eintrag gefunden wurde.

In den Dokus steht folgendes:

Zitat
Dokumentation der Xobor Plugin API
Template-Methoden:

{{schleife|filter(neueschleife, filterfeldname==filterwert[, max])}}
Erzeugt eine neue Schleife {{neueschleife:startlist}} .. in der Alle Elemente aus {{schleife.startlist}} enthalten sind, welche für das element {{schleife:filterfeldname}} den Wert "filterwert" haben. Der Wert max ist optional - es werden maximal max Aktionen in der neuen Schleife gespeichert.
{{schleife|filter(neueschleife, filterfeldname!=filterwert[, max])}}
Wie oben nur mit allen elementen NOT IN Filterwert

Legende:
! Funktioniert nicht mit Schleifen (z.B. {{varname^=true.start}} aber nicht {{schleife:varname^=true.start}})

--------------

Funktionsunterstützung

{{schleife:var>10.start}} {{schleife:var>10.end}} - auch mit <, <=, >=, %=

{{_count_arrayname}} - Ist direkt nach Startlist verfügbar und gibt Anzahl der Elemente aus
{{_current_list_i}} - aktuelles Element in der Schleife. Das erste Element hat den Wert 1!


Da hab ich bis heute noch nicht heraus gefunden wie das funktioner soll.
Ein lauffähiges Beispiel wäre da schon sehr hilfreich.

Zum Beispiel aus der Liste {{useronlin}} den eigenen Eintrag mit der {{user_id}} zu finden, die Variablen, hier die Anzahl Beiträge, zu entnehmen und die Schleife zu bendend.
Hinbekommen habe ich lediglich, dass die Schleife immer komplett durchlaufen wird.

1
2
3
4
5
6
 
{{useronline.startlist}}
{{user_a.start}}{{useronline:user_id}}{{user_a.end}}
{{user_a=={user_id}.start}}
{{user_tmp_posts.start}}{{useronline:user_posts}}{{user_tmp_posts.end}}
{{user_a=={user_id}.end}}
{{useronline.end}}
 



Ich weiß auch nicht, wie man einen Filter mit der eigenen user_id in die Schleife einbauen kann um nur den einen Eintrag zu extrahieren und dann die Schleife benden.


www.friends-of-xobor.de (621181 - Template kann wechsel bei Plungin Tests)
www.seniorenclub-sel-koeln.de (578865 - V6 Template)

 Antworten

 Beitrag melden
09.09.2025 07:54 (zuletzt bearbeitet: 09.09.2025 07:55)
avatar  Ingmar
#2 RE: Template Schleifen mit Filter und break
avatar
Technik

Zitat von Mike48 im Beitrag #1
Zum Beispiel aus der Liste {{useronlin}} den eigenen Eintrag mit der {{user_id}} zu finden, die Variablen, hier die Anzahl Beiträge, zu entnehmen und die Schleife zu bendend.
Hinbekommen habe ich lediglich, dass die Schleife immer komplett durchlaufen wird.


Ein "break" in diesem Sinne gibt es nicht. Die Schlaufe wird immer durchlaufen. Aber das sollte für dich keinen Unterschied machen.
Du könntest dir auch selbst eine Variable setzen, die die Schleife nach einem Treffer beendet:


1
2
3
4
5
6
7
8
9
10
11
12
13
 

{{gefunden.start}}0{{gefunden.end}}
{{useronline.startlist}}
 
{{user_a.start}}{{useronline:user_id}}{{user_a.end}}
{{gefunden==0.start}}
{{user_a=={user_id}.start}}
{{user_tmp_posts.start}}{{useronline:user_posts}}{{user_tmp_posts.end}}
{{gefunden.start}}1{{gefunden.end}}
{{user_a=={user_id}.end}}
{{gefunden==1.end}}
{{useronline.end}}
 
 




Zitat von Mike48 im Beitrag #1
Ich weiß auch nicht, wie man einen Filter mit der eigenen user_id in die Schleife einbauen kann um nur den einen Eintrag zu extrahieren und dann die Schleife benden.


Das hier müsste die daten des Users 12345 in einen Array namens {{meinedaten}} filtern, den du dann wieder mit .startlist durchlaufen kannst.
{{useronline|filter(meinedaten,user_id==12345)}}

Ob das auch mit einer Variablen als filterwert klappt müsstest du testen. In der Dokumentation steht davon nichts, daher tippe ich das klappt eher nicht.

Viele Grüße,
Ingmar


 Technik · Homepagemodules.de · Miranus GmbH

 Antworten

 Beitrag melden
09.09.2025 09:41
#3 RE: Template Schleifen mit Filter und break
avatar
Mitglied

die Filterfunktion habe ich auch noch nicht begriffen.
mein Beispiel {{useronline}} sortieren

1
2
3
4
5
6
7
8
9
10
11
12
13
14
 

{{useronline|filter(sichtbar,invisible==0)}}
{{useronline|filter(unsichtbar,invisible==1)}}
 
<ul>
{{sichtbar.startlist}}
<li> sichtbar: id {{sichtbar:user_id}} posts: {{sichtbar:posts}}</li>
{{sichtbar.end}}
 
{{unsichtbar.startlist}}
<li> unsichtbar: id {{unsichtbar:user_id}} posts: {{unsichtbar:posts}}</li>
{{unsichtbar.end}}
</ul>
 
 



ich erhalte keine Ausgabe





... würde es „Fussball spielen” heissen


https://test-2022.xobor.de/ V4
https://test-v6.xobor.de/ V6 dark-mode

Die Signatur befindet sich aus technischen Gründen auf der Rückseite dieses Beitrages ...


vG Bernd‍

 Antworten

 Beitrag melden
09.09.2025 09:54
avatar  Ingmar
#4 RE: Template Schleifen mit Filter und break
avatar
Technik

Sieht erstmal nicht falsch aus.
Muss ich mit dem konkreten Code mal testen.
In der "oberen Leiste" wird das Menü gefiltert. Da kann man sich ein Beispiel anschauen

Viele Grüße,
Ingmar


 Technik · Homepagemodules.de · Miranus GmbH

 Antworten

 Beitrag melden
09.09.2025 10:10
#5 RE: Template Schleifen mit Filter und break
avatar
Mitglied

Danke für das Beispiel

1
2
3
4
5
 

{{menu|filter(menulist, key!==link_mail|link_logout|link_online|link_lastentry|link_member|link_search|link_userlist|link_faq,100)}}

{{menulist.startlist}}
 
 



mit max_wert klappt es jetzt auch

1
2
3
 
{{useronline|filter(sichtbar,invisible==0,100)}}
{{useronline|filter(unsichtbar,invisible==1,100)}}
 
 





... würde es „Fussball spielen” heissen


https://test-2022.xobor.de/ V4
https://test-v6.xobor.de/ V6 dark-mode

Die Signatur befindet sich aus technischen Gründen auf der Rückseite dieses Beitrages ...


vG Bernd‍

 Antworten

 Beitrag melden
09.09.2025 13:35 (zuletzt bearbeitet: 09.09.2025 13:36)
avatar  Mike48
#6 RE: Template Schleifen mit Filter und break
avatar
Mitglied

In der Beschreibung ist max als optional angegeben.
Das scheint aber nicht der Fall zu sein. Ohne einen Wert für max bekomme ich nichts.
Auch für negiert != ist falsch in der Beschreibung. Das muss !== heißen.


www.friends-of-xobor.de (621181 - Template kann wechsel bei Plungin Tests)
www.seniorenclub-sel-koeln.de (578865 - V6 Template)

 Antworten

 Beitrag melden
10.09.2025 10:03
#7 RE: Template Schleifen mit Filter und break
avatar
Mitglied

hatte doch noch ein paar Fehler in meinem Beispiel gefunden, u.a. kann mein Filterwert nur "1" oder "" sein

1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
{{useronline|filter(sichtbar,invisible!==1,1000)}}
{{useronline|filter(unsichtbar,invisible==1,1000)}}
&nbsp;
<ul>
{{sichtbar.startlist}}
<li> sichtbar: id {{sichtbar:user_id}} posts: {{sichtbar:user_posts}}</li>
{{sichtbar.end}}
&nbsp;
{{unsichtbar.startlist}}
<li> unsichtbar: id {{unsichtbar:user_id}} posts: {{unsichtbar:user_posts}}</li>
{{unsichtbar.end}}
</ul>
 

 





... würde es „Fussball spielen” heissen


https://test-2022.xobor.de/ V4
https://test-v6.xobor.de/ V6 dark-mode

Die Signatur befindet sich aus technischen Gründen auf der Rückseite dieses Beitrages ...


vG Bernd‍

 Antworten

 Beitrag melden
Bereits Mitglied?
Jetzt anmelden!
Mitglied werden?
Jetzt registrieren!