TYPO3-Testaccount
Testen Sie die aktuellste TYPO3-Version kostenlos und unverbindlich für einen Monat!

Jetzt testen!

Schulungen

Content Elemente mit Zugriffsschutz anders layouten


Autor Nachricht
Verfasst am: 23. 07. 2009 [22:19]
aemka
Themenersteller
Dabei seit: 23.07.2009
Beiträge: 339
Hi,

gibt es eine (einfache) Möglichkeit, Content-Elemente, die mit einem Zugriffsschutz versehen wurden, also erst nach Frontend-Login sichtbar werden mit einem Extra-Div zur optischen Hervorhebung zu versehen?

Matthias

ProfilWWWSkype
Verfasst am: 24. 07. 2009 [10:40]
sunixzs
Dabei seit: 18.06.2008
Beiträge: 106
Hallo aemka,

eine Möglichkeit wäre, dass der Redakteur dem Content-Element einen Rahmen gibt. Bei jedem Content-Element in "Allgemein -> Rahmen" zu finden. Diese Rahmen kann man per CSS formatieren.

Evtl. liese sich da auch was über Conditions machen?

TYPOSCRIPT
[usergroup = *]
# Bei eingeloggtem Benutzer Header aendern...
lib.stdheader.stdWrap.dataWrap = <div class="meinSpeziellerHeader header-n{cObj:parentRecordNumber}">|</div>
[global]


Den Wrap für Content-Elemente habe ich gerade nicht parat. Das müsste aber dann ähnlich sein (vllt. so?):

TYPOSCRIPT
[usergroup = *]
tt_content.stdWrap.dataWrap = <div class="meinSpeziellerContent">|</div>
[global]



Schönen Gruß

PS: Poste bitte mal, wenn Du die Lösung hast.

EDIT: Achso, du willst nur Rahmen/DIVs bei Elementen, welche vor dem Login nicht sichtbar waren. Bei meinen Conditions würde das ja nur für alle Elemente gelten. Hm, man könnte im TS bestimmt abfragen, ob ein Feld in der Tabelle tt_content besetzt ist:

TYPOSCRIPT
page.10 = TEMPLATE
page.10 {
  template = FILE
  template.file = fileadmin/html/index.html
  workOnSubpart = DOCUMENT
  subparts {
    CONTENT < styles.content.get
    CONTENT.renderObj.stdWrap.innerWrap.cObject = CASE
    CONTENT.renderObj.stdWrap.innerWrap.cObject {
      key.field = fe_group
      0=TEXT
      0.value = |
      1=TEXT
      1.value = <div class="group1">|</div>
      2=TEXT
      2.value = <div class="group2">|</div>
    }
  }
}


Das Problem hier bei wäre, dass es ja mehrere Gruppen geben kann, die kommasepariert im Feld fe_group gespeichert werden. ("1", "2", "1,2", "2,1", ...).

Achso, das ist alles nicht getestet. Ich möchte nur Lösungsansätze bringen.

[Dieser Beitrag wurde 3mal bearbeitet, zuletzt am 24.07.2009 um 10:53.]
Profil
Verfasst am: 24. 07. 2009 [11:40]
aemka
Themenersteller
Dabei seit: 23.07.2009
Beiträge: 339
Tausend Dank - ich habe echt selten mal so fundierte Antworten hier erhalten. Ich werde letzteres mal einsetzen. Es wird auch nur 1 FE-Usergruppe geben. Daher sollte das eigentlich funktionieren.

Ich werde mal posten, wie es aussieht.

ProfilWWWSkype
Verfasst am: 21. 08. 2009 [00:22]
aemka
Themenersteller
Dabei seit: 23.07.2009
Beiträge: 339
Hi nochmal nun wollte ich das mal testen. Allerdings nutze ich in dem Projekt Templavoila und frage mich wo ich nun ansetzen. Für die Spalte wo das passieren soll, sieht das in TV aktuell so aus - (wo) kann ich denn hier mit meinem CONTENT.renderObj... angreifen?

HTML
...
			<field_colright type="array">
				<tx_templavoila type="array">
					<title>Rechte Spalte</title>
					<sample_data type="array">
						<numIndex index="0"></numIndex>
					</sample_data>
					<eType>ce</eType>
					<TypoScript><![CDATA[
	10= RECORDS
	10.source.current=1
	10.tables = tt_content
	10.wrap = <!--TYPO3SEARCH_begin--> | <!--TYPO3SEARCH_end-->
				     ]]></TypoScript>
					<oldStyleColumnNumber type="integer">1</oldStyleColumnNumber>
				</tx_templavoila>
			    ...
			</field_colright>
...


Bzw. ich frage mich - wer rendert bei Templavoila eigentlich? styles.content.get? Ich hatte mir daher das im TS schon mal überlegt, was aber keinen Einfluss hat:

TYPOSCRIPT
styles.content.get.renderObj.stdWrap.innerWrap.cObject = CASE
styles.content.get.renderObj.stdWrap.innerWrap.cObject {
  key.field = fe_group
  0=TEXT
  0.value = |
  1=TEXT
  1.value = <div class="intern">|</div>
}


Hat noch jemand Ideen?

ProfilWWWSkype
Verfasst am: 21. 08. 2009 [00:27]
aemka
Themenersteller
Dabei seit: 23.07.2009
Beiträge: 339
Ok, ich habe eine Lösung. In TV ändert man gar nichts, sondern bereits auf tt_content Ebene:

TYPOSCRIPT
tt_content.stdWrap.innerWrap.cObject = CASE
tt_content.stdWrap.innerWrap.cObject {
  key.field = fe_group
  0 = TEXT
  0.value = |
  1 = TEXT
  1.value = <div class="intern">|</div>
}


ProfilWWWSkype