Wie erstelle ich einen dynamischen Kategoriebaum?

Fragen zum Erstellen von Templates für webEdition.
hotcroc
Member
Beiträge: 59
Registriert: Do 23. Sep 2010, 03:15
Wohnort: Melbourne, Australien

Wie erstelle ich einen dynamischen Kategoriebaum?

Beitragvon hotcroc » Mi 3. Apr 2013, 07:51

Hier also ein Beispiel was ich machen moechte.

Ich habe Kategorien und Subkategorien, sagen wir mal beispielsweise Laender (Kategorie), Bundelaender (Subkategorie) und Staedte (Objekt). Alle Eintraege auf der Stadtebene sollen also Objekte sein. Nun will der Kunde das alles in form einer Stichpunktliste (unodered list) mit mehreren Ebenen ausgeben. Ungefaer so:
  • Land 1 (Kategorie)
    • Bundesland 1 (Subkategorie)
      • Stadt 1 (Object)
      • Stadt 2 (Object)
      • Stadt 3 (Object)
      • ...
    • Bundesland 2 (Subkategorie)
      • Stadt 1 (Object)
      • Stadt 2 (Object)
      • Stadt 3 (Object)
      • ...
  • Land 2 (Kategorie)
    • Bundesland 1 (Subkategorie)
      • Stadt 1 (Object)
      • Stadt 2 (Object)
      • Stadt 3 (Object)
      • ...
    • Bundesland 2 (Subkategorie)
      • Stadt 1 (Object)
      • Stadt 2 (Object)
      • Stadt 3 (Object)
      • ...
    • ...
Ich weiss wie ich ein Listview Type="category" erstelle, das hab ich schon oft gemacht. Aber wie erstelle ich nun innerhalb dieser Listview eine neue Listview die mir nur die zweite Ebene ausgibt? Und wie erstelle ich ein Listview Type="object" auf der dritten Ebene die mir nur die Objecte der jeweiligen Subkategorie ausgibt?

Ist das nur mit WE-Tags ueberhaupt umsetzbar? Falls ha waere ich fuer jede Anregung dankbar.

der Norbert

WBTMagnum
webEdition Partner
webEdition Partner
Beiträge: 1825
Registriert: Di 7. Mär 2006, 16:50
Wohnort: Wien
Kontaktdaten:

Re: Wie erstelle ich einen dynamischen Kategoriebaum?

Beitragvon WBTMagnum » Mi 3. Apr 2013, 10:04

Hallo Norbert,

Ich hab für so etwas zwar keine fertige Lösung parat, folgendermaßen sollte es aber gehen:
  • Erste Ebene: Normal die Länder-Kategorien ausgeben. Was ich jetzt nicht weiß ist, ob man da die Rekursion einschränken muss oder nicht. In der Doku habe ich jetzt dazu auch nichts gefunden.
  • Zweite Ebene: Schau dir mal das Attribut "parentid" von <we:listview type="category"> an. Damit kannst du die mal ausgeben.
  • Dritte Ebene: Die kannst du dann <we:listview type="object"></we:listview> mit dem Attribut "categories" (dem Pfad der Kategorie!) verwenden.
Alternativ kannst du die ersten beiden Ebenen auch in EINER Listview abbilden. Dazu musst dann dann allerdings den Kategorie-Pfad aufsplitten und die Länderunterscheidung mit IF-Abfragen umsetzen.

HTH,
Sascha

hotcroc
Member
Beiträge: 59
Registriert: Do 23. Sep 2010, 03:15
Wohnort: Melbourne, Australien

Re: Wie erstelle ich einen dynamischen Kategoriebaum?

Beitragvon hotcroc » Mi 29. Mai 2013, 07:51

Hab das so geloest: Ich schreibe auf jeder Ebene die ID der Kategorie in ein Variable und nutze diese dann auf der nachsten Ebene als parentID.

Code: Alles auswählen

		<we:listview type="category" parentid="2" name="cats">
			<ul>
				<we:repeat>
					<li>
						<we:field name="Category" alt="we_path" hyperlink="true"/> <we:field name="ID" />
						<we:field name="ID" to="global" nameto="pntID" />
						<we:var type="global" name="pos" />
						<ul>
							<we:listview type="category" name="subcats" parentid="$pntID">
								<we:repeat>
									<li>
										<we:field name="Category" alt="we_path" /> <we:field name="ID" />
										<we:field name="ID" to="global" nameto="pntID2" />
										<ul>
											<we:listview type="category" name="subsubcats" parentid="$pntID2">
												<we:repeat>
													<li>
														<we:field name="Category" alt="we_path" /> <we:field name="ID" />
														<we:field name="ID" to="global" nameto="pntID3" />
														<br/>
														
														<we:listview type="object" classid="2" categoryids="$pntID3"> 
															<ul>
																<we:repeat>
																	<li>
																		<a href="<we:field name="we_path">"><we:field type="text" name="Headline" /></a><br>
																		<we:category showpath="true"/>
																	</li>
																</we:repeat>
															</ul>
														</we:listview>		
													</li>	
												</we:repeat>
											</we:listview>
										</ul>
									</li>	
								</we:repeat>
							</we:listview>
						</ul>
					</li>
				</we:repeat>
			</ul>
		</we:listview>

Benutzeravatar
christobal
Senior Member
Beiträge: 313
Registriert: Do 4. Nov 2010, 13:03
Wohnort: Reith bei Seefeld, Tirol - Österreich
Kontaktdaten:

Re: Wie erstelle ich einen dynamischen Kategoriebaum?

Beitragvon christobal » Fr 16. Okt 2020, 09:52

Hallo aus Tirol, es schneit!

Ich hab das nachgebaut und funktioniert fantastisch! Vielen Dank, genau so was brauch ich gerade! Einzig, wenn ich Objekte unterschiedlicher Kategoriehierarchie zuordne, bekomme ichs doppelt ausgegeben. Kann mir da bitte wer helfen?

Christoph
aedtest.png
aedtest.png (72.77 KiB) 1386 mal betrachtet

Code: Alles auswählen

<we:listview type="category" parentid="26" name="cats">

<we:comment>1. KATEGORIE-EBENE</we:comment>
<ul>
<we:repeat>
<li class="mt-5">
<span class="badge badge-primary"><we:field name="ID" /></span> <we:field name="Category" />
<we:field name="ID" to="global" nameto="pntID" />

<we:comment>2. KATEGORIE-EBENE</we:comment>
<ul>
<we:listview type="category" name="subcats" parentid="\$pntID">
<we:repeat>
<li class="mt-1">
<span class="badge badge-success"><we:field name="ID" /></span> <we:field name="Category" />
<we:field name="ID" to="global" nameto="pntIDzwei" />

<we:comment>OBJEKTE 2</we:comment>
<we:listview type="object" classid="22" name="listezwei" categoryids="$pntIDzwei"> 
<ul>
<we:repeat>
<li><a href="<we:field name="we_path" />"><we:field type="text" name="Titel" /></a></li>
</we:repeat>
</ul>
</we:listview>	

<we:comment>3. KATEGORIE-EBENE</we:comment>
<ul>
<we:listview type="category" name="subsubcats" parentid="\$pntIDzwei">
<we:repeat>
<li>
<span class="badge badge-info"><we:field name="ID" /></span> <we:field name="Category" />
<we:field name="ID" to="global" nameto="pntIDdrei" />

<we:comment>OBJEKTE 3</we:comment>
<we:listview type="object" classid="22" name="listedrei" categoryids="\$pntIDdrei"> 
<ul>
<we:repeat>
<li><a href="<we:field name="we_path" />"><we:field type="text" name="Titel" /></a></li>
</we:repeat>
</ul>
</we:listview>		

</li>	
</we:repeat>
</we:listview>
</ul>
</li>	
</we:repeat>
</we:listview>
</ul>
</li>
</we:repeat>
</ul>
</we:listview>
BIG Detail, Kaspar & Sigl OG
Riedgasse 8b
A-6020 Innsbruck
Tel. +43 512 346070-40
Fax +43 512 346070-20
Mobil: +43 676 3438011

christoph.kaspar@bigdetail.com
http://www.bigdetail.com

WBTMagnum
webEdition Partner
webEdition Partner
Beiträge: 1825
Registriert: Di 7. Mär 2006, 16:50
Wohnort: Wien
Kontaktdaten:

Re: Wie erstelle ich einen dynamischen Kategoriebaum?

Beitragvon WBTMagnum » Fr 16. Okt 2020, 12:07

Hey,

Kann man bei der Ausgabe schon bereinigen, es kommt halt darauf an, welche Zuordnungen möglich sind und was das gewünschte Ergebnis ist.

Unter der Annahme, dass es keine Mehrfachzuordnungen gibt und immer nur die tiefste Kategorie (z.B. AED) ausgegeben werden soll, kannst du das ev. so lösen:
  1. Die bereits "ausgegebenen" Kategorien werden in einer Variable oder einem Array gesammelt.
  2. Bevor eine Kategorie ausgegeben wird, wird immer geschaut, ob sie schon in dem Array ist.
  3. Dazu musst du vermutlich die Struktur der listviews etwas umstellen.
HTH,
Sascha

Benutzeravatar
christobal
Senior Member
Beiträge: 313
Registriert: Do 4. Nov 2010, 13:03
Wohnort: Reith bei Seefeld, Tirol - Österreich
Kontaktdaten:

Re: Wie erstelle ich einen dynamischen Kategoriebaum?

Beitragvon christobal » Fr 16. Okt 2020, 13:53

Grüß Dich Sascha, vielen Dank für die Anregung! Beide Annahmen von Dir sind richtig!, es gibt keine Mehrfachzuordnungen und die tiefste Kategorie soll ausgegeben werden!

Nachdem ich leider kein PHP beherrsche, kann ich das mit dem Array nicht umsetzen...

Trotzdem ein schönes Wochenende!
BIG Detail, Kaspar & Sigl OG
Riedgasse 8b
A-6020 Innsbruck
Tel. +43 512 346070-40
Fax +43 512 346070-20
Mobil: +43 676 3438011

christoph.kaspar@bigdetail.com
http://www.bigdetail.com


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

Wer ist online?

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