Zum Inhalt springen

Condition: Inhaltselement ein/ausblenden

Erstellt am 20. Juli 2006 · 7 Antworten · letzte Antwort am 26. Dezember 2009

Tags: Frage

workfare ·

Hallo Liste,
ich habe eine Downloadseite mit Windowssoftware. Regelmässig laden sich Mac-User die Software runter und beschweren sich dann (natürlich: Auf der Seite steht dick und fett: Windows, aber ...)
Also muss eine condition für die eine Seite her:

[globalVar = TSFE:id=5]  && [system = mac]
page.10.marks.INHALT >
page.10 = HTML
page.10 {
value = <div class="SublineOrange" align="right">Sie haben einen Mac! Unsere Software ist für Windows!</div><a href="javascript:history.back()">ZURÜCK</a>
}
[global]

Das funktioniert, ist mir aber zu grob! Lieber wäre mir, ich könnte bei Erfüllen der Bedingung ein Inhaltselement, dass zuvor unsichtbar war, sichtbar schalten (fette Warnung, Popup ect...).
Aber ich habe keinen Plan wie.
Vorschläge?
Bedank
/
Jens

jochen ·

Hi workfare,

wenn das Problem ist, dass Du die Meldung für Mac-User in ein Inhaltselement schreiben willst statt direkt im TypoScript, dann könntest Du es folgendermaßen lösen: Du erstellt z.B. in einem SysOrdner das Inhaltselement mit der Meldung und merkst Dir dessen ID. Im TypoScript verwendest Du dann Deine Bedingung, um entweder die Downloads (für Windows-User) oder das Inhaltselement mit der Meldung anzuzeigen. Sollte in etwa so funktionieren:

[system = mac]
### Inhaltselement (z.B. ID 42) mit Meldung für Mac-User einbinden
temp.msg_or_download = RECORDS
temp.msg_or_download {
  tables = tt_content
### Inhaltselement mit ID 42 ist Quelle
  source = 42
}
[else]
### Hier die Downloads für Windows-User
temp.msg_or_download = ...
[global]
...
page.10 < temp.msg_or_download
...

Grüße
Jochen

workfare ·

Hi Jochen und Bedank!
Ich habe ein Inhaltselement in einem Sysordner angelegt und mir per PhPMyAdmin die UID rausgefummelt und eingetragen, leider passiert nix!

[globalVar = TSFE:id=5] && [system = mac]
### Inhaltselement (z.B. ID 42) mit Meldung für Mac-User einbinden
temp.msg_or_download = RECORDS
temp.msg_or_download {
  tables = tt_content
### Inhaltselement mit ID 715 ist Quelle
  source = 715
}
[else]
### Hier die Downloads für Windows-User
temp.msg_or_download = {
  tables = tt_content
### Inhaltselement mit ID 45 ist Quelle
  source = 45
}
[global]

Resultat: Nix passiert
Siehst du den Fehler?
Auf jeden Fall erstmal Danke Schön, dass kann man ja immer mal gebrauchen ...

Proximo ·

Ich hab mir das mal so gedacht:

### Hier die Downloads für Windows-User
temp.msg_or_download = RECORDS
temp.msg_or_download = {
  tables = tt_content
### Inhaltselement mit ID 45 ist Quelle
  source = 45
  dontCheckPid = 1
}
[PIDinRootline = 5] && [system = mac]
### Inhaltselement (z.B. ID 42) mit Meldung für Mac-User einbinden
### Inhaltselement mit ID 715 ist Quelle
temp.msg_or_download.source = 715
[global]
page.10 < temp.msg_or_download

Das dumme ist nur, dass ich keine Ahnung von deinem Seitenaufbau habe/nicht weiß ob ich "PIDinRootline" verwenden kann... oder ob ich ein Gegenargument setzten muß.

Prizipiell sollte es aber so funktionen...

MFG Proximo

EDIT: Schön ist die Lösung nicht, ich würde mir was anderes überlegen, dass WENIGSTENS mit Spalten stat ID arbeitet

workfare ·

Danke Proximo!
Aber das will auch nicht werden ...
Ich habe das in ein Extensiontemplates gebaut. Auf der entsprechenden Seite liegt das Inhaltselement TEXT mit der UID 45. In diesem Text befindet sich das Link zum Download. Vermutlich habe ich mich da unpräzise ausgedrückt. Der eigentliche Download findet ausserhalb von typo3 statt (php mit Registrierung usw). 714 ist ein dhtml-pop up mit der Warnung, aber mir würde auch ein einfaches Stück Text reichen, kann man da nicht was mit "hide" / "unhide" machen?

### Hier die Downloads für Windows-User
temp.msg_or_download = RECORDS
temp.msg_or_download = {
 tables = tt_content
### Inhaltselement mit ID 45 ist Quelle
  source = 45
  dontCheckPid = 1
}
[PIDinRootline = 5] && [system = mac]
# Inhaltselement (z.B. ID 42) mit Meldung für Mac-User einbinden
### Inhaltselement mit ID 714 ist Quelle
temp.msg_or_download.source = 714
[global]
page.10.marks.INHALT < temp.msg_or_download

Blöde Frage: Das page.10 usw macht mir die Seite leer, aber es ist doch richtige den Marker mit temp.usw zu füllen, oder?
PIDinRootline sollte kein Problem sein
Bedank
/
jens

workfare ·

unelegante Lösung, aber Sie funktioniert:
Wenn ein Mac User die Downloadseite aufruft, schiebe ich ihm/ihr eine andere unter (mit der ID 149) mit den entsprechenden Informationen:

[system = mac]
page.10.marks.INHALT >
            page.10.marks.INHALT = CONTENT
            page.10.marks.INHALT.table = tt_content
            page.10.marks.INHALT.select.pidInList = 149
            page.10.marks.INHALT.select.languageField = sys_language_uid  
            page.10.marks.INHALT.select.where = colPos = 0
            page.10.marks.INHALT.select.orderBy = sorting
[global]

Die Lösung mit den Inhaltselementen wäre natürlich eleganter gewesen, habe ich aber nicht hinbekommen ....

n00k ·

Hallo zusammen,

ich hätte dazu auch mal eine Frage.
Angenommen ich möchte nun eine Inhaltselement via Condition einblenden, welches zwischen anderen Elementen auf der Seite steht.
Sprich ich habe die Spalte "Normal" mit 4 Elementen und das 2. möchte ich ausgeblendet haben, bzw. mit Condition dann wieder einblenden.
Geht das?

Ich dachte daran, das hidden-Feld auf 0 zu setzen, wenn die Condition ausgeführt wird. Im Normalfall wäre das CE dann hidden=1 oder so.

Vielen Dank.

Michaelh74 ·

Das geht noch etwas kürzer:

[system = mac]
page.10.marks.INHALT < styles.content.get
page.10.marks.INHALT.select.pidInList = 149
[global]

Alternativ kann Du auch eine Spalte für WIN und eine für PC verwenden:

# default
page.10.marks.INHALT < styles.content.get
page.10.marks.INHALT.select.pidInList = 149
[system = mac]
page.10.marks.INHALT < styles.content.getRight
[global]

Gruß
Michael