Views - Ausgabe abhängig vom Wert eines Feldes

am 03.07.2013 - 14:24 Uhr in
Hallo zusammen,
leider hab ich über die Suche keine passende Lösung zu meinem Problem gefunden,
daher schreib ich mal eben (etwas ausführlicher) wo mein Problem liegt:
Also ich hab einen selbst angelegten Content Type mit dem Namen "news-entry".
Dieser hat unter anderem die folgenden Felder:
"News Quelle" - ist eine Auswahlliste - Auswahlmöglichkeiten sind: "externer Link" bzw. "interner Link"
"News externe Quelle Name" - Textfeld - wird nur angezeigt, wenn "News Quelle" = "externer Link"
"News externe Quelle URL" - Textfeld - wird nur angezeigt, wenn "News Quelle" = "externer Link"
Das zugehörige "View" vom Typ Block heißt "News Block".
Die Ausgabe steht auf "show:fields".
Als Felder im View ausgewählt sind unter anderem:
Content: News Quelle ("Exclude from display")
Content: News externe Quelle Name ("Exclude from display")
Content: News externe Quelle URL ("Exclude from display")
Ziel:
Ich möchte ein Feld im View hinzufügen, dem ich über ein Replacement sage wie die Ausgabe aussehen soll.
Wenn "externer Link" als Quelle ausgewählt wurde, diese Ausgabe:
<a href="… [url] ..." target="_blank">
<span class="text">Zum Artikel</span>
<span class="link_img"></span>
</a>
und bei Auswahl "interner Link" als Quelle dann diese Ausgabe:
<a href="… [interner Link] …">
<span class="text"></span>
<span class="link_img"></span>
</a>
Hat jemand einen Tipp oder eine Idee, wie man das umsetzen könnte?
Vielen Dank schon mal im Voraus
- Anmelden oder Registrieren um Kommentare zu schreiben
Ich hätte wohl eher zwei
am 03.07.2013 - 15:39 Uhr
Ich hätte wohl eher zwei Link-Felder im Node, eines für interne Links, eines für externe Links.
In der View kannst Du dann ohne, einen Unterschied zu machen, einfach beide Felder ausgeben. Der Punkt ist,
dass Views von selbst ein Feld ausblendet, wenn es keinen Inhalt hat.
Danke Leda für deine extrem
am 03.07.2013 - 17:02 Uhr
Danke Leda für deine extrem schnelle Antwort.
Dann hätte ich aber doch immer noch das Problem, dass wenn jemand die externe URL einträgt,
dennoch auch die interne URL vorhanden ist.
Das hieße "interne" Elemente würden nur den Link mit den Node-Alias-Path bekommen und "externe"
durch das explizite Eintragen der externen URL würden in der Ausgabe,
sowohl den Node-Alias-Path als Link als auch die externe URL angezeigt bekommen.
Oder hab ich was übersehen?
So, wie ich Dich verstehe,
am 03.07.2013 - 17:45 Uhr
So, wie ich Dich verstehe, möchtest Du den Erfasser des Nodes dazu veranlassen, sich für die Eingabe eines internen ODER eines externen Links zu entscheiden, und zwar über die Auswahlbox. Was, wenn man vielleicht mal beide Links haben möchte?
Ich würde so vorgehen:
- Modul "Link" installieren. Das gibt einen für Links optimierten Feldtyp (anstelle des normalen Textfeldes)
- zwei Felder davon einbauen, eines für intern, eines für extern
- dem Benutzer überlassen, welches er wie ausfüllt
- in der View einfach beide ausgeben: es werden nur jene angezeigt, die auch ausgefüllt sind.
- über CSS die Ausgabe nach Wunsch unterschiedlich darstellen
Hast Du denn einen speziellen Grund, warum Du die Auswahlbox brauchst?
Das klingt ja auch super mit
am 03.07.2013 - 18:33 Uhr
Das klingt ja auch super mit dem Modul.
Probier ich gleich morgen früh aus, heut komm ich nicht mehr dazu.
Ja das mit der Auswahl hattest du richtig verstanden,
ich wollte dass man sich hier explizit für eins von beiden entscheidet.
Ein weiterer Grund warum ich den Weg mit der Auswahlbox gegangen bin war,
dass ich es den späteren Redakteuren so einfach wie möglich machen wollte
und damit sie wirklich auch nur das sehen und befüllen was benötigt wird.
Vielleicht denk ich aber auch nur zu kompliziert.
Da das Layout vorgegeben ist, kann ich es fast ausschließen,
dass irgendwann in der Anzeige mal beide Links benötigt werden,
aber man weiß ja nie.
Ok, ich verstehe. Schau Dir
am 03.07.2013 - 22:08 Uhr
Ok, ich verstehe. Schau Dir doch zusätzlich auch noch das Modul "Conditional Fields" an, ich habs zwar selbst noch nie verwendet, aber es könnte Dich auch weiterbringen, was das Definieren von abhängigen Feldern betrifft.
Rewrite/empty
am 04.07.2013 - 07:57 Uhr
Moin.
Wenn Du 2 Felder ("Link intern", "Link extern") hast, kannst Du das relativ einfach direkt über Views machen. Nehmen wir mal an, dass der externe Link Vorrang vor dem internen Link hat (wenn also beide Felder gefüllt sind, wird der externe Link angezeigt).
Dann fügst Du beide Felder zum View hinzu (erst "interner Link", dann "externer Link") und setzt das Feld für den internen Link auf "Exclude from display". Im Bereich "Rewrite Results" trägst Du dann diese Daten ein:
Das Feld für den externen Link konfigurierst Du (bis auf "Exclude from display") auch so.
Jetzt trägst Du unter "No results behavior" beim Feld für den externen Link noch den Token für das interne Feld ein und dann sollte es eigentlich wie gewünscht funktionieren.
hth,
Stefan
Re: Rewrite/empty
am 10.07.2013 - 10:26 Uhr
Moin Stefan,
danke für deinen Rewrite-Empty-Tipp, hat mir sehr weiter geholfen.