Listview - besondere Objektreihenfolge

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

Listview - besondere Objektreihenfolge

Beitragvon hotcroc » Mo 25. Jan 2016, 06:19

Folgendes Scenario:

Ich habe eine eine Objektklasse für Musiker und eine zweite Objektklasse für CD’s/Alben. Ich ordne Musiker ihren Alben zu, indem ich die ID des Musikers in einem Textfeld in jedem Album-Objekt festhalte. Soweit so gut.

Mein Ziel:
Ich möchte nun eine Liste von Musikern per Listview ausgeben, die danach sortiert wer zuletzt ein Album rausgebracht hat - je neuer das Album desto weiter oben soll der Kunstler in der Liste erscheinen.

Mein Lösungsansatz war so:

1. Erzeugen einer Album-Listview, sortiert nach Veroeffentlichungsdatum.
2. Dann, innerhalb von <repeat> eine Objekt erzeugen, das für jedes Album das dazugehörige Künstlerobjekt ausgibt.

Code: Alles auswählen

<we:listview calssid=“[album]” order=“veroeffentlichungsdatum”>
    <we:repeat>
        <we:field name=“musikerID” to=“global” nameto=“musikerID” >
        <we:object id=“$musikerid”>
            Musiker details…
        </object>
    </we:repeat>
</we:listview>
Das würde dann schon mal das Problem mit der Reihenfolge lösen. Ich haette dann aber Duplikate, da ja ein Kunstler immer dann angezeigt wird wenn eines seiner Alben in der Liste auftaucht. Wenn also jemand 10 Alben hat, dann würde der dazugehörige Kuenstler auch 10 mal an verschidenen Stellen angezeigt. Ich hätte den aber gerne nur einmal angezeigt.


Meine Frage nun. Wie verhindere ich Künstlerduplikate in der Listview ODER wie erreiche ich das selbe Resultat auf anderem Wege.

Ich hoffe das mach Sinn. Hat jemand ne Idee?

Benutzeravatar
blickfang
webEdition Partner
webEdition Partner
Beiträge: 812
Registriert: Mo 15. Dez 2003, 16:00
Kontaktdaten:

Re: Listview - besondere Objektreihenfolge

Beitragvon blickfang » Mo 25. Jan 2016, 10:53

Hallo hotcroc,

schau Dir mal die Multiobjekte an, da kannst Du direkt Objekte miteinander verknüpfen, ohne manuell eine Id angelegn zu müssen. Leider ist es derzeit nicht möglich, nach Feldern eines Multiobjekts zu sortieren, weshalb Dein Ansatz der Listview über die Alben zunächst richtig scheint.

Evtl. kannst Du Dir die schon angezeigten Künstler in einem gloabeln Array merken und dann innerhalb der Schleife nur noch die anzeigen, die noch nicht im Array stehen.

Code: Alles auswählen

<?php $GLOBLAS['allKuenstler'] = array(); ?>

<we:listview calssid=“[album]” order=“veroeffentlichungsdatum”>
    <we:repeat>
       <we:listview type="multiobject" name="kuenstler">
        <we:repeat>
		<we:field name="WE_ID" to="global" nameto="kuenstlerId" />
			<?php if(!in_array($GLOBALS['kuenstlerId'], GLOBALS['allKuenstler'])) { ?>
				Künstlerdaten
			<?php } ?>
	
	        	<?php array_push($GLOBALS['kuenstlerId'], GLOBALS['allKuenstler']); ?>
		</we:repeat>
        </we:listview>
        <?php if(!in_array($GLOBALS['kuenstlerId'], GLOBALS['allKuenstler'])) { ?>
	        <we:field name="albumName" />
        <?php } ?>
    </we:repeat>
</we:listview>
hierzu müsste es in Deiner Klasse der Alben eine Multiobjekt-Verknüpfung zu den Künstlern geben.

Viele Grüße
Timo
webEdition Partner - https://www.blickfang-media.com
Ehemals im Vorstand des webEdition e.V.


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

Wer ist online?

Mitglieder in diesem Forum: Bing [Bot] und 14 Gäste