Zum Inhalt springen

GIFBUILDER & Login-Fragen

Erstellt am 20. April 2006 · 14 Antworten · letzte Antwort am 27. April 2006

Tags: Bilder, felogin, Frage

Nmfrat der Tschetschene ·

Hallo Forum,
Ich habe 2 Fragen:
1. Auf meiner root-Seite habe ich ein Content Element fürs Login. Sobald der User sich aber einloggt, soll der Logout Button nicht an derselben stelle angezeigt werden wie das Login. Wie kann ich mit TypoScript nun überprüfen, ob der User eingeloggt ist, und jeh nachdem nur das Element an einer anderen Stelle im Template auslesen?
Mein TS:

#Falls user nicht eingeloggt:
#Login-Box ausgeben
subparts.CONTENTLEFT < styles.content.getLeft
#Falls user eingeloggt ist:
#Logout-Box ausgeben
subparts.LOGOUT < styles.content.getLeft

Frage 2:GIFBUILDER
Ich habe versucht mir ein Bild erstellen zu lassen, und dann im Template anzeigen zu lassen:

subparts.PAGETITLE = IMAGE
subparts.PAGETITLE.file = GIFBUILDER
subparts.PAGETITLE.file {
XY = 559, 86
backColor = #00FFFF
}

Nun sollte doch ein Bild erstellt werden und mir im Template an die entsprechende Stelle gesetzt werden?!
Aller dings passiert bei mir gar nichts. Die Marker im Template werden zwar ersetzt, jedoch wird kein Bild angezeigt.
Was mache ich falsch?

thx für eure Hilfe.

Nmfrat der Tschetschene ·

Kann mir niemand helfen?

Um das Login-Element an einer anderen Stelle auszugeben habe ich folgendes mal versucht (klappt leider immer noch nicht 🙁):

#Login-Box ausgeben
subparts.LOGOUT < styles.content.getLeft
subparts.LOGOUT.if {
 loginUser != *
}

subparts.LOGIN.10 < styles.content.getLeft
subparts.LOGIN.10.if {
  loginUser = *
}
ehontheim ·

Hm, vielleicht mache ich es mir ja zu einfach:

Unter den Zugriffoptionen für ein Element (z.b. die Loginbox) kannst du ja die Option "beim login verstecken" bzw. "beim jedem login anzeigen" verwenden. Also 2 Elemente anlegen:

logINbox= "beim login verstecken"; heißt, nach erfolgtem Login ist die logINbox weg

logOUTbox = "beim jedem login anzeigen"; heißt, wird erst mit Login angezeigt.

Wenn' hilft....

Grüße

Erwin

toyde ·

Login/Logout erkennen:

Setup-Code unterster Post; 1. Seite:
» #41392
Condition wird betreten, wenn eine Benutzergruppe erkannt wird:

[usergroup = *]

GIFBUILDER:

Nmfrat schrieb
subparts.PAGETITLE.file = GIFBUILDER

subparts.PAGETITLE - Möchtest Du Überschriften/Titel grafisch ausgeben?
Wenn ja: Forumsuche » "überschrift bild gifbuilder".

Nmfrat der Tschetschene ·

@toyde

[usergroup = *]

Was macht das genau? Also falls der User eingeloggt ist, werden alle darauffolgenden Anweisungen ausgeführt?

Ja mit dem Gifbuilder möchte ich Titel grafisch darstellen.
Kann es sein, dass das mit subpages.TITELGIF... nicht funktioniert?

thx Nmfrat

toyde ·
Nmfrat der Tschetschene schrieb

@toyde

[usergroup = *]

Was macht das genau? Also falls der User eingeloggt ist, werden alle darauffolgenden Anweisungen ausgeführt?

toyde schrieb

Setup-Code unterster Post; 1. Seite:
» #41392
Condition wird betreten, wenn eine Benutzergruppe erkannt wird

Das Codebeispiel hab ich Dir angegeben und verlinkt (tja, und erklärt).

Nmfrat der Tschetschene schrieb

Ja mit dem Gifbuilder möchte ich Titel grafisch darstellen.
Kann es sein, dass das mit subpages.TITELGIF... nicht funktioniert?

toyde schrieb

Möchtest Du Überschriften/Titel grafisch ausgeben?
Wenn ja: Forumsuche » "überschrift bild gifbuilder".

Wieso am Raten? Such doch mit diesen Stichwörtern mal, die ich Dir angegeben habe.

Die nächste Wiederholung kostet Dich nen Kuchen 😉 .

Nmfrat der Tschetschene ·

Ich hab jetzt ein bisschen zum GIFBUILDER gesucht. Habe mir den Thread mal angeschaut: #20025

Daraus habe ich dann dieses Beispiel bei mir versucht:

marks.TITLEGIF = IMAGE
marks.TITLEGIF.file = GIFBUILDER
marks.TITLEGIF.file {
  XY = 100,100
  backColor = red
}

Der Marker wird zwar ersetzt, jedoch einfach mit einer Leerzeile.
Text ausgeben Funktioniert prima:

marks.TITLEGIF = TEXT
marks.TITLEGIF.value = Test Title

Zum Login:
Sorry toyde, aber ich versteh deinen Code nicht ganz. Wenn ich das nun mit einer Condition mache, bringt das auch nichts. Will heissen, dass das Content-Element einfach ständig angezeigt wird, egal ob mann nun eingeloggt ist oder nicht...scheinbar ist mir das ganze Typoscript einfach zu hoch..🙁

[usergroup = *]
marks.LOGIN < content.styles.getLeft
[global]
toyde ·

Der Marker wird zwar ersetzt, jedoch einfach mit einer Leerzeile.

Suche zusätzlich noch nach text.field.

@Condition:
Du kommst der Sache schon näher, bist aber immernoch am rumraten.

[usergroup = *]
temp.TEMPOBJEKT < content.styles.getLeft
[global]

1. Conditions am Besten zuoberst im Setup ausführen (übersichtlich, und dürfen nicht von Klammern{} umgeben sein - falls weiter unten im TS-Code). Nur ein Tipp.
2. marks und subparts werden etwas tiefer in TEMPLATE-Objekten definiert. Oben wird ein temporäres Objekt zugewiesen. Das kannst Du nennen wie Du möchtest. Diesem Objekt wird der linke Content reinkopiert, damit Du das Ganze weiter unten in deinem TS einbauen kannst.

mysite.template = TEMPLATE
mysite.template {
 workOnSubpart....
 subparts.LOGIN < temp.TEMPOBJEKT
}

Bei Fragen zu Condition und marks/subparts gibt die Doku per ctrl+f schneller Antwort als ich 😉 .

TS ist anspruchsvoll, das ist richtig. Aber es gibt mittlerweile ne "Zeugs" zum nachlesen.

lg

Nmfrat der Tschetschene ·

Das verstecken der Logoutbox falls kein User angemeldet ist klappt jetzt:

[usergroup = *]
temp.LOGOUTBOX < styles.content.getLeft
[global] 
temp.LOGINBOX < styles.content.getLeft

Der nächste Schritt wäre ja die Loginbox zu verstecken. Dazu müsste ich ja auch eine Condition haben. Ich hab mir jetzt in der TSRef die Conditions angeschaut. Ich habe allerdings keine möglichkeit für eine else-Anwendung o.Ä. gefunden. [usergroup != *] klappt auch nicht. Was gibt es da für Möglichkeiten?

Nun noch eine allgemeine Frage. Ich möchte ja schlussendlich, dass die Logout-Box auf jeder Seite ersichtlich sein soll. Aber es macht ja wohl keinen Sinn auf jeder Page ein Login-Element zu erstellen. Wie kann ich im Typoscript bestimmen, dass z.B. das Content-Element mit der ID 6 immer ausgegeben werden soll?

mfg Nmfrat

PS: Vielen Dank für die Hilfe!

toyde ·

?

Der nächste Schritt wäre ja die Loginbox zu verstecken.

Ich habe Dir ja meinen Code verlinkt. Anschauungsbeispiel:
http://www.web-kultur.ch/toyde_works.html
name: testuser
pwd: testuser

Ich habe 1 Contentlement "Login". Dies zeigt per default die beiden Felder an, bei korrektem Login den Logout-Button & Username. Weshalb benutzt Du nicht gleiches Schema?

Wie kann ich im Typoscript bestimmen, dass z.B. das Content-Element mit der ID 6 immer ausgegeben werden soll?

Ja, Stichwort RECORDS.

Nmfrat der Tschetschene ·

Nun gut, ich habs jetzt einigermassen zum laufen gebracht:

# Temp-Variablen für Login/Logout-Boxen setzen
temp.LOGINBOX < styles.content.getLeft
[usergroup = *]
temp.LOGOUTBOX < styles.content.getLeft
temp.LOGINBOX =
[global]

# START: Login/Logout definition #############
subparts.LOGIN < temp.LOGINBOX

#subparts.LOGOUT < temp.LOGOUTBOX
subparts.LOGOUT = CONTENT
subparts.LOGOUT.table = tt_content
subparts.LOGOUT.select {
  pidInList = 7
  orderBy = sorting
}
# END: Login/Logout definition #############

Am Anfang des Setups werden die Temp-Variablen gesetzt. Und diese nacher in die Entsprechenden subparts ausgegeben.

Eine Frage ist allerdings noch offen; Mit pidInList = 7 gebe ich ja das Logout-Element auf jeder Seite aus. Jedoch will ich das ja nur machen, wenn die Temp-Variabel temp.LOGOUTBOX gestzt ist. Hier kann ich allerdings nicht mit Conditions arbeiten, da ich mich in {} befinde.

Wie kann ich das hier lösen?

Danke für die Hilfe

toyde ·

Kannst Du mir einen Link zum Frontend schicken (falls Du willst per private Nachricht)? Ich würde mir mal deine Login/Logout-Sache genauer anschauen. Verliere da glaube ich den Überblick 😉 .

Die Sache mit direkter ID-Zuweisung:

subparts.LOGOUT = CONTENT
subparts.LOGOUT.table = tt_content
subparts.LOGOUT.select {
  pidInList = 7
  orderBy = sorting
}

Wie gesagt, RECORDS hätte ich verwendet. Braucht 2-3 Zeilen weniger Code.

Ich sehe den Sinn nicht so ganz von dem Wechseln und Unterscheidungen, darum meine obige Frage.

Nmfrat der Tschetschene ·

Ich habs jetzt selber gelöst. Ist eigentlich ganz einfach, aber manchmal bringt halt ne Nacht drüber schlafen mehr, als eine Stunde dran rumzuwürgen 😃
Ich hab jetzt einfach den Content mit der ID 7 in die Temp.LOGINBOX gelesen und nacher ausgegeben. Voila!

Aber eine letzte Frage muss ich mir noch erlauben. Wo kann ich die Login/Logout-Box der Extension newloginbox Editieren?

toyde ·
Nmfrat der Tschetschene schrieb

Wo kann ich die Login/Logout-Box der Extension newloginbox Editieren?

Allfällige Templates und PHP-Klassen liegen unter typo3conf/ext oder typo3/ext (bzw. typo3/sysext).

Konfigurationen, etc. sind im TypoScript Object Browser zu finden.
Modul Template > bestehendes TypoScript-Template (Root) > Dropdown TypoScript Object Browser.

Meine generelle Antwort auf deine generelle Frage 😉 .

Nmfrat der Tschetschene ·

Nun nach einigem Probieren muss ich doch nochmal Konkret werden 😉

Ich habe jetzt in der class.tx_newloginbox_p1.php die Tabelle für das Logout formatiert:

$content.='
<!--
	"Logout" form
-->
<form name="logout" action="'.htmlspecialchars($this->pi_getPageLink($GLOBALS['TSFE']->id,'_top')).'" target="_top" method="post" style="margin: 0 0 0 0;">
<input type="hidden" name="logintype" value="logout" />
<input type="hidden" name="pid" value="'.intval($d['_STORAGE_PID']).'" />
	<table '.$this->conf['tableParams_details'].'>
	<tr>
		<td></td>
		<td><input type="submit" name="submit"   id="'.$this->pi_getClassName('logout_submit').'" value="'.$this->pi_getLL('logout','',1).'"'.$this->pi_classParam('submit').' />
		</td>
		<td><a href="#" onClick="document.logout.submit();" style="color:#000000;">Logout</td>
	</tr>
	</table>
</form>
';

Wie du siehst will ich das Logout-Formular anstatt mit einem Button mit einem Link anzeigen und dann per JS ausführen. Nur funktioniert mein JS nicht. Ich weiss echt nicht woran das liegt 🙁. Bisher habe ich Formulare immer so per JS ausgeführt, nur hier klappt es nicht!!!???