Seite 1 von 1

Objektlistview nach Category Title sortieren

Verfasst: Fr 20. Jul 2018, 11:53
von Finn
Moin Moin,

ich habe folgende Situation:

Ein Objektlistview gibt eine Übersicht über diverse Obstsorten aus. Dabei hat jedes Objekt eine Kategorie wie z.B. Apfel, Birne usw.

Wenn ich jetzt für die Listview eine Sortierung angebe, wird anhand der Category ID sortiert, nicht anhand des Category Titels.

Komme ich irgendwie an den Titel dran um nach diesem zu Sortieren?

Aktuell kann ich den Titel der Category über folgenden Code in der Tabelle ausgeben, aber schön wäre auch eine Sortierung danach:

Code: Alles auswählen

<we:field type="text" name="we_category" to="global" nameto="var_cat" />
<we:category  id="$var_cat"/>
Hier die ganze Listview:

Code: Alles auswählen

<we:listview type="object" name="objekt-pflege" workspaceID="39" classid="5">
	<table>
		<thead>
			<th>Obst</th>
			<th>Name</th>
			<th>Bild</th>
			<th>Preis / 500g</th>
			<th>Preis / 1kg</th>
			<th>Verfügbar</th>
			<th>Bearbeiten</th>
		</thead>
		<tbody>
			<we:repeat>
				<we:field type="text" name="we_category" to="global" nameto="var_cat" />
				<we:field nameto="var_verfuegbarkeit" to="global" type="checkbox" name="Verfuegbarkeit" />
				<tr>
					<td><we:category  id="$var_cat"/></td>
					<td><we:field type="text" name="Title" /> <we:field type="text" name="Sorte" /></td>
					<td><we:field type="img" name="Bild" /></td>
					<td><we:field type="text" name="Preis_500g" /><we:ifFieldNotEmpty match="Preis_500g"> €</we:ifFieldNotEmpty></td>
					<td><we:field type="text" name="Preis_1kg" /><we:ifFieldNotEmpty match="Preis_1kg"> €</we:ifFieldNotEmpty> </td>
					<td><we:ifVar name="var_verfuegbarkeit" match="1" type="global"> <span style="color: green;">Verfügbar</span> <we:else />  <span style="color: red;">Nicht Verfügbar</span> </we:ifVar></td>
					<td><a class="fancybox" data-fancybox data-type="iframe" data-src="/_extras/objekte/single_objekt_view.php?we_editObject_ID=<we:field type="int" name="we_id" />" href="javascript:;">
						Bearbeiten 
						</a></td>  
				</tr>
			</we:repeat>
		</tbody>
	</table>
</we:listview>
Danke für eure Hilfe!

LG
Finn

Re: Objektlistview nach Category Title sortieren

Verfasst: Fr 20. Jul 2018, 12:38
von blickfang
Hi Finn,
ich vermute das wirst Du direkt über die Listview nicht hinbekommen. Ich würde vermutlich so vorgehene, dass ich erst eine Listview mache um die Kategorien und Objekt-Ids zu bekommen, diese dann in einem Aray merken und über das Array dann schleifen um mit <we:object> die Objekte ind er gewünschten Reihenfolge (nach beliebigem Sortieren des Array) ausgeben.

Wenn Du dann aber noch mit Paginierung o.ä. arbeiten willst, wird ekelig ;-)
Viele Grüße
Timo

Re: Objektlistview nach Category Title sortieren

Verfasst: Sa 21. Jul 2018, 10:19
von mokraemer
Nein, das geht generell nicht über die LV, da ein Objekt ja mehrere Kategorien haben kann würde entweder das Objekt bei der Ausgabe dupliziert oder es wäre zufällig eine der gewählten Kategorien. Wenn es hier eine Idee gibt, nehmen wir das gern auf.
Alternativ zu php kannst du natürlich über js (jquery) die Tabelle sortierbar bzw. nach einer der Spalten noch sortieren (wie Timo schon sagt halt nur nicht mit Paginierung).

Re: Objektlistview nach Category Title sortieren

Verfasst: So 22. Jul 2018, 21:52
von WBTMagnum
mokraemer hat geschrieben: Sa 21. Jul 2018, 10:19Alternativ zu php kannst du natürlich über js (jquery) die Tabelle sortierbar bzw. nach einer der Spalten noch sortieren (wie Timo schon sagt halt nur nicht mit Paginierung).
Mit DataTables bekommst du Sortierung und Paginierung (alles clientseitig).

Liebe Grüße,
Sascha

Re: Objektlistview nach Category Title sortieren

Verfasst: So 22. Jul 2018, 21:57
von mokraemer
Mit DataTables bekommst du Sortierung und Paginierung (alles clientseitig).
Sicher, nur müssen dafür halt alle Daten gezogen werden. Für kleine Listen ist das machbar, bei großen kostet das halt auch Performance. Aber evtl. erfüllt das genau den gesuchten Zweck.

Re: Objektlistview nach Category Title sortieren

Verfasst: Mo 23. Jul 2018, 14:29
von Finn
Moin Moin,

danke für den Hinweis, das Problem ist, dass diese Liste ca. 50 Einträge haben wird. Diese werden mit Frontendediting bearbeitet, dies erfolgt in einem Fancybox iFrame.

Da Statusänderungen sichtbar werden sollen, wird automatisch nach dem Schließen des iFrames ein Reload der Seite durchgeführt.

Ich kann mir bei Clientseitigen Lösungen vorstellen, dass die Ladezeit pro Arbeitsvorgang deutlich erhöht werden würde. Da wäre Abhilfe geschaffen wenn ich eine AJAX Lösung zum Neuladen von bestimmten Objektfeldern innerhalb eines Listviews hätte, da habe ich allerdings keine Ahnung wie ich das machen soll und ob das überhaupt geht.

Auf eine Paginierung könnte ich verzichten.

Ich werde eine Clientseitige Lösung mal Testen, zur Not muss ich halt ein Feld für die Sortierung ins Objekt setzen und dieses muss dann händisch gepflegt werden.