Hallo,
beide Codes kommen ins Setup, nichts davon in die Konstanten.
Der gezeigte PHP-Code muss noch ein wenig erweitert werden:
<?php
class user_library_class {
function pageOwner($content,$conf) {
global $TSFE;
//$TSFE->set_no_cache();
$this->sql = "SELECT realName, email FROM be_users AS u,pages AS p WHERE u.uid=p.perms_userid AND p.uid=".$GLOBALS["TSFE"]->id;
$res=mysql(TYPO3_db, $this->sql);
echo mysql_error();
if (mysql_num_rows($res)>0) {
$row=mysql_fetch_assoc($res);
if ($row["email"]!=null) {
$GLOBALS["TSFE"]->usrPageOwner="<a href='mailto:".$row["email"]."'><font size="1">".$row["realName"]."</font></a>";
} else {
$GLOBALS["TSFE"]->usrPageOwner=$row["realName"];
}
} else {
$GLOBALS["TSFE"]->usrPageOwner="Unbekannt";
}
return "<!-- Scriptaufruf: fileadmin/test_library.php -->
<!-- Setzen von TSFE->usrPageOwner -->";
}
}
?>
Ja, es wird nur der intiale Ersteller angezeigt, aber es dürfte nicht weiter schwer sein, das SQL-Statement anzupassen und zusätzlich noch den letzten Bearbeiter zu ermitteln. (Denke ich jedenfalls, ich hatte die Anforderung (noch)nicht)
Gruss,
Chris
Hi,
geht irgendwie immer noch nicht, wird nischt angezeigt. Habe Dein PHP-Script erstellt und ins Setup
# externes PHP Skript inkludieren
includeLibs.test_library = fileadmin/test_library.php
page.1 = USER
page.1.userFunc = user_test_library_class->pageOwner
# page Owner: emaillink des Seitenverantwortlichen
marks.PAGE_OWNER = TEXT
marks.PAGE_OWNER.data= TSFE : usrPageOwner
geschrieben. habe leider kein Plan von PHP.
Ciao -M.
was muss denn eigendlich für TYPO3_db eingesetzt werden? Einfach der Name der Datenbank? Kann ich mir ja gar nicht vorstellen... Oder ist TYPO3_db eine Variable? Sieht ja nicht so aus, ist ja kein '$' davor und ein String ist es auch nicht...
$res=mysql(TYPO3_db, $this->sql);
Hallo,
das ist eine Konstante und die können in PHP so angegeben werden.
Gruss,
Chris
also die konstante ist ein string der den namen der Typo3 DB beinhaltet!?
Ich habe noch ein weiteres problem. Ich habe das gefühl, das mein skript gar nicht aufgerufen wird. Habe in der funktion alles auskommentiert und eine kleine ausgabe in eine datei implementiert. Rufe ich die Seite auf, sollte also ne datei geschrieben werden. wird aber nicht.
includeLibs.test = fileadmin/media/scripts/test.php
page.9 = USER
page.9.userFunc = something->pageOwner
das sollte ja die funktion aufrufen. Die fett markierten stellen irritieren mich noch etwas, im prinzip kann ich da ja hinschreiben, was ich will, oder?
Hallo,
also die konstante ist ein string der den namen der Typo3 DB beinhaltet!?
Naja, so etwas ähnliches hatte ich mir gedacht.
test:
Ich habe es ausprobiert und es ist Typo3 wie es scheint einfach mal egal was da steht. Die Hauptsache ist es steht überhaupt irgend etwas dort, sonst wird die PHP-Datei nicht geladen. Es geht also auch:
includeLibs.0815 = fileadmin/media/scripts/test.php
Ich bin auch der Ansicht: Es hat auch nichts mit dem späteren Methoden-Aufruf zu tun.
something:
Dieser Parameter ist nicht egal.
Es muss im Normalfall immer user_ davor stehen. Dies ist als Installationsparameter angegeben:
[FE][userFuncClassPrefix] = user_
Und sollte dann Klassennamen in der PHP-Datei entsprechen (Beispiel: user_library_class).
Ich kann mir nicht ganz erklären warum das so:
page.1.userFunc = user_test_library_class->pageOwner
vorher mit der Erweiterung test funktioniert hat, da ich es jetzt nicht mehr so zur Anzeige bringe und es definitiv auch keinen Sinn macht!!!???? Hmm? Schon komisch, aber genau so hatte ich es im Template stehen.
Vollständig sollte das Ganze dann so aussehen:
page.includeLibs.page_owner = fileadmin/template/main/PHP/user_libary.php
page.1 = USER
page.1.userFunc = user_library_class->pageOwner
# Hier weiterer Template-Code
marks.PAGE_OWNER = TEXT
marks.PAGE_OWNER.data= TSFE : usrPageOwner
Dieser Code funktioniert bei mir mit dem passendem oben abgebildetem PHP-Code.
Ich hoffe das hilft Dir weiter und Du bekommst es ans laufen.
Gruss,
Chris
Hi Chris,
der Thread ist ja jetzt doch etwas länger geworden. Um die Fäden nochmal zusammenzuführen und für mich zum Verständnis:
Ist die von Dir beschriebene Variante jetzt eine, die auch den Benutzer einblendet, der die letzte Änderung vorgenommen hat oder wird nur der initiale Ersteller angezeigt?
Zudem die Frage:
Würde es funktionieren, diese Geschichte auf einzelne Inhaltselemente herunterzubrechen? Betreibt man Typo3 als Intranet-CMS, ist es wünschenswert, auf manchen Seiten für jedes Inhaltselement verschiedene Redakteure einzusetzen. Somit gibt es keinen Verantwortlichen für die komplette Seite. Ich habe aber in der Datenbank kein Feld für den Ersteller eines Inhaltselementes in den jeweiligen Tabellen gefunden, also wird es wohl eher nicht gehen, oder?
Gruß,
Guido
Hallo Guido,
man sieht den aktuellen Besitzer der Seite (also der jenige unter dem Modul: Zugriff). Nicht den mit der letzten Änderung.
Für jedes Content-Element scheint das mit dem Standard-Datenbank Layout nicht zu gehen, da tatsächlich in tt_content nichts dergleichen eingetragen wird.
Vieleicht kannst Du das ja erweitern. :-)
Gruss,
Chris
also danke erst mal für deine hilfe, das php skript wird jetzt aufgerufen, aber leider bekomme ich einige php-fehler und ich weiß nicht woran es liegt. hast du noch iergendwelche klassenvariablen angelegt, oder erbst du von einer anderen klasse?
kannst du deine klasse mal posten?
oh, hab nich gesehn, das du sie ja schon komplett gepostet hattest... ist das wirklich alles? Komisch, normalerweise müsste das ja dann auch bei mir funktionieren.
also ich hab jetzt genau die klasse genommen die du gepostet hast. Folgende Fehler werden angezeigt:
Parse error: parse error, expecting `T_OLD_FUNCTION' or `T_FUNCTION' or `T_VAR' or `'}'' in /var/www/cms/fileadmin/template/user_last_modifier.php on line 5
Warning: session_register(): Cannot send session cookie - headers already sent by (output started at /var/www/cms/fileadmin/template/user_last_modifier.php:5) in /var/www/cms/typo3conf/ext/de_phpot/res1/phpot/class.tx_dephpot_phpopentracker_container.php on line 54
Warning: session_register(): Cannot send session cache limiter - headers already sent (output started at /var/www/cms/fileadmin/template/user_last_modifier.php:5) in /var/www/cms/typo3conf/ext/de_phpot/res1/phpot/class.tx_dephpot_phpopentracker_container.php on line 54
Ich weiß nich, worans liegt
Hallo,
also ich habe nichts weiter in meiner Klassedefinition und soweit ich mich erinnere habe ich auch nichts weiter geändert.
Poste nochmal Deinen aktuell verwendeten TS-Code.
Es scheint mir auch fast so, dass vieleicht nicht alle geschweiften Klammern in der PHP-Datei geschlossen werden.
Die Meldung:
Parse error: parse error, expecting `T_OLD_FUNCTION' or `T_FUNCTION' or `T_VAR' or `'}''
klingt danach.
mein bisher relevanter TS-Code:
includeLibs.lastuser = fileadmin/template/user_last_modifier.php
page.1 = USER
page.1.userFunc = user_last_modifier->pageOwner
ich habe genau die klasse verwendet, die du in diesem thread gepostet hast und da ist ja alles richtig geklammert...
Also ich kann mir das nicht erklären. Ich habe sogar nochmal meine Klasse mit dem geposteten überschrieben und trotzdem funktioniert es.
Das ist mein TS-Code:
page.includeLibs.user_libs = fileadmin/template/main/PHP/user_libary.php
page.1 = USER
page.1.userFunc = user_library_class->pageOwner
....
.......
....
marks.PAGE_OWNER = TEXT
marks.PAGE_OWNER.data= TSFE : usrPageOwner
Wo füllst Du die Daten in Deine Seite ein? Auch über ein Template-Marker???
Gruss,
Chris
ja, über einen marker (AUTHOR):
# Author-ID
includeLibs.lastuser = fileadmin/template/user_last_modifier.php
page.1 = USER
page.1.userFunc = user_last_modifier->pageOwner
page.10.subparts.AUTHOR = TEXT
page.10.subparts.AUTHOR {
data = TSFE : usrPageOwner
if.isTrue.data = TSFE : usrPageOwner
wrap = <font size=-3>Author-ID: | </font></div>
if >
}
vielleicht liegt es an einer unterschiedlichen konfiguration der php.ini!? ich habe das gefühl, das es was mit den globalen variablen zu tu hat. iergendwas ist da faul.
Ich weiss leider nicht woran es jetzt noch liegen könnte.
Vieleicht liegt an irgendwelchen im Template definierten Dingen. Darum würde ich mal eben eine ganz simple Seite ins Leben rufen die nur diesen Autor befüllt. Vieleicht klappt es ja dann.
es läuft jetzt.
aber der grund, wieso es nicht lief, ist wirklich krotesk.
habe die ganze zeit den quellcode aus diesem thread kopiert, und in die php datei eingefügt. ergebnis->funktioniert nicht.
dann hab ich den quellcode erst in ein textfile eingefügt, und anschließend in das php file-> funktioniert.
Find ich schon krass, da müssen iergendwelche zeichen mitkopiert worden sein, die in kate (editor) nicht angezeigt werden. anders kann ich mir das nicht erklären. was für ein $!"&)/%&"! "Fehler"
ich muss es jetzt noch iergendwie schaffen, den letzten modifizierer zu ermitteln, muss iergendwie gehn. auch wenn ich diesbezüglich schwarz sehe, da in der db nix zu finden ist.
danke für deine hilfe uva deine geduld, cwiechmann
Na da bin ich aber froh. 😃