You are not logged in.

1

Monday, March 30th 2009, 5:16pm

Sie haben Profilfeld XX noch nicht ausgefüllt auf neuer Seite

Hallo,

ich habe mir eine neues Seite für das wBB erstellt und würde dort gerne eine Abfrage einfügen.
Z.B.: Sie haben ihr Geschlecht noch nicht nagegeben, bitte klicken Sie hier und das zu tun... oder so.

Kann mir jamend sagen was ich in php- und tpl-Datei einfügen muss um die Profilfeldabfrage zu integrieren?

dtdesign

Moderator

Posts: 1,923

Location: Berlin

  • Send private message

2

Monday, March 30th 2009, 5:28pm

Profileingaben werden über den UserEditor verarbeitet, lade einfach den Benutzer dort rein und frage das Feld entsprechend ab.

3

Monday, March 30th 2009, 5:37pm

Schon mal danke für die schnelle Antwort!
Allerdings habe ich keine Ahnung wie ich den User dort rein lade und auch nicht wie ich das Feld entsprechend abfrage...



Ich denke im Template müsste es irgendwie so aussehen:

HTML

1
2
3
{if $user->userOption13} 
{else}Du hast noch kein Geschlecht angegeben. Klicke hier... 
{/if}


Allerdings ist das auch eher grob geraten :D

dtdesign

Moderator

Posts: 1,923

Location: Berlin

  • Send private message

4

Monday, March 30th 2009, 5:49pm

Jap, so ist es auch richtig, einfach $user->feldname abfragen.
Alexander Ebert
Entwickler WoltLab® GmbH

5

Monday, March 30th 2009, 5:50pm

und wie müsste der Teil in meiner php-Datei aussehen damit der Befehl auch "erkannt" wird?

[PixeL]

Community Team

Posts: 2,368

Location: Essen

  • Send private message

6

Monday, March 30th 2009, 5:51pm

Hallo,
{if $user->userOption13} {else}Du hast noch kein Geschlecht angegeben. Klicke hier... {/if}
mach es lieber so:

Template source code

1
2
3
{if $user->userOption13 == ""} 
   Du hast noch kein Geschlecht angegeben. Klicke hier... 
{/if}
Mit freundlichen Grüßen
Okan Esen
-------------------------------------
Ich beantworte keine Supportfragen per PN, IM (MSN, ICQ) und/oder E-Mail!
-------------------------------------

Ab dem 15. Juli - 28. August nur sporadisch bis kaum erreichbar!

dtdesign

Moderator

Posts: 1,923

Location: Berlin

  • Send private message

7

Monday, March 30th 2009, 5:52pm

Eigentlich müsste dir das automatisch zur Verfügung stehen, da die Daten via WCF::getUser() bereit gestellt werden und das sollte immer vorhanden sein (notfalls bekommst du userID = 0 [Gast!]),
Alexander Ebert
Entwickler WoltLab® GmbH

8

Monday, March 30th 2009, 5:59pm

In beiden Varianten bekomme ich:

Source code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Fatal error: PHP notice in file /srv/www/vhosts/domain.de/httpdocs/wcf/templates/compiled/38_1_1_WelcomestartPage.php (42): Undefined index: user 


Information: 

error message: PHP notice in file /srv/www/vhosts/domain.de/httpdocs/wcf/templates/compiled/38_1_1_WelcomestartPage.php (42): Undefined index: user 
error code: 0 
file: /srv/www/vhosts/domain.de/httpdocs/wcf/lib/system/WCF.class.php (255) 
php version: 5.2.6 
wcf version: 1.0.10 (Horizon) 
date: Mon, 30 Mar 2009 15:59:08 +0000 
request: /index.php?page=Welcomestart 
referer: http://www.domain.de/index.php?page=Welcomestart 
Stacktrace: 
#0 /srv/www/vhosts/domain.de/httpdocs/wcf/templates/compiled/38_1_1_WelcomestartPage.php(42): WCF::handleError(8, 'Undefined index...', '/srv/www/vhosts...', 42, Array) #1 /srv/www/vhosts/domain.de/httpdocs/wcf/lib/system/template/Template.class.php(243): include('/srv/www/vhosts...') #2 /srv/www/vhosts/domain.de/httpdocs/wcf/lib/page/AbstractPage.class.php(84): Template->display('WelcomestartPag...') #3 /srv/www/vhosts/domain.de/httpdocs/wcf/lib/page/AbstractPage.class.php(36): AbstractPage->show() #4 /srv/www/vhosts/domain.de/httpdocs/wcf/lib/util/RequestHandler.class.php(63): AbstractPage->__construct() #5 /srv/www/vhosts/domain.de/httpdocs/wcf/lib/util/RequestHandler.class.php(91): RequestHandler->__construct('Welcomestart', Array, 'page') #6 /srv/www/vhosts/domain.de/httpdocs/index.php(8): RequestHandler::handle(Array) #7 {main}

This post has been edited 1 times, last edit by "bart_the1st" (Mar 30th 2009, 9:54pm)


dtdesign

Moderator

Posts: 1,923

Location: Berlin

  • Send private message

9

Monday, March 30th 2009, 6:01pm

In deiner PHP-Datei:

PHP Source code

1
WCF::getTpl()->assign('user'WCF::getUser());
Alexander Ebert
Entwickler WoltLab® GmbH

10

Monday, March 30th 2009, 9:53pm

Klasse! Hat soweit alles geklappt.

Allerdings habe ich noch ein Problem.

Beim Geschlecht klappt es irgendwie nicht.

ich habe bisher versucht:

HTML

1
{if $user->userOption13 == ""}


HTML

1
{if $user->userOption13 == "{lang}wcf.user.profile.noDeclaration{/lang}"}


HTML

1
{if $user->userOption13 == "Keine Angabe"}


HTML

1
{if $user->userOption13 == "wcf.user.profile.noDeclaration"}


HTML

1
{if $user->userOption13 == "0:wcf.user.profile.noDeclaration"}


Bei allen Feldern in denen einfach etwas ausgefüllt werden muss und beim Geburtsdatum klappt alles mit erster Variante.

[PixeL]

Community Team

Posts: 2,368

Location: Essen

  • Send private message

11

Monday, March 30th 2009, 9:59pm

Hallo,

ich glaube bei Auswahllisten muss das anders geregelt werden.
Oder mach es doch so, dass für nur das Geburtsjahr abfragst, gehört ja schließlich zum Geburtsdatum ;)
Mit freundlichen Grüßen
Okan Esen
-------------------------------------
Ich beantworte keine Supportfragen per PN, IM (MSN, ICQ) und/oder E-Mail!
-------------------------------------

Ab dem 15. Juli - 28. August nur sporadisch bis kaum erreichbar!

12

Monday, March 30th 2009, 10:07pm

Das Geburtsdatum klappt, Texteingabefelder und Mutiauswahlen auch, nur beim Geschlecht und einfach auswahl per Dropdown funktionieren nicht.

dtdesign

Moderator

Posts: 1,923

Location: Berlin

  • Send private message

13

Monday, March 30th 2009, 10:17pm

Lass dir doch Mal mit

PHP Source code

1
die('<pre>' print_r(WCF::getUser(), true));

Das geladene Userobjekt ausgeben, dann siehst du auch welchen Wert die Variable hat. Code einfach in deine PHP-Datei einfügen :)
Alexander Ebert
Entwickler WoltLab® GmbH

14

Monday, March 30th 2009, 10:32pm

Perfekt!!! Vielen, vielen Dank!
Für alle die ähnliches versuchen... es wäre die 0 gewesen :D
also:

HTML

1
{if $user->userOption13 == "0"}

Plunts

Community Team

Posts: 6,289

Location: Ruhrpott

Occupation: Azubi / Student

  • Send private message

15

Tuesday, March 31st 2009, 4:15pm

Moooment, WCF::getTPL()->assign('user', WCF::getUser(); ist vollkommen sinnlos. Wenn du im Template auf den eingeloggten User zugreifen willst verwende einfach $this->user

HTML

1
{if $this->user->userOption13 == "0"}
Je größer der Dachschaden, desto schöner der Aufblick zum Himmel.
Mein Demoforum

16

Tuesday, March 31st 2009, 4:47pm

^^ bei mir funktioniert es... habe es mit meinem Adminaccount und mit einem Testuser getestet.
Bei beiden wird es so angezeigt wie es soll und wenn das Profilfeld dann gefüllt wird verändert sich auch die Anzeige.

dtdesign

Moderator

Posts: 1,923

Location: Berlin

  • Send private message

17

Tuesday, March 31st 2009, 4:52pm

Plunts hat Recht, entferne einfach den Eintrag von mir und verwende $this->user statt $user . Ansonsten werden die Daten doppelt geladen, was natürlich unsinnig ist. Entschuldige bitte, ich hatte angenommen, dass dies nicht automatisch zugewiesen wird ;)
Alexander Ebert
Entwickler WoltLab® GmbH

18

Tuesday, March 31st 2009, 5:16pm

Klappt wundebar!

Danke.

19

Tuesday, April 7th 2009, 9:58pm

Hallo :)

vielleicht kann mir jemand in dem obrigen Zusammenhang noch mal helfen.
Ich habe eine Abfrage wie oben beschrieben, in die Profilansicht eingebaut und möchte nun, dass es nur angezeigt wird, wenn der User auf seinem eigenen Profil ist um zu gucken wie es aussieht und nicht in jedem Benutzerprofil.

Was muss ich anstatt dem hier eingeben?

Source code

1
{if $this->user->userID != ?????}


Ich habe anstatt der Fragezeichen auch schon $this->user und $user getestet, leider war es nicht so einfach wie ich gehofft hatte :D

This post has been edited 1 times, last edit by "bart_the1st" (Apr 7th 2009, 10:17pm)


20

Tuesday, April 7th 2009, 10:28pm

Hi,

also der Ansatz ist richtig, Du musst also überprüfen, ob die UserID des aufgerufenen Benutzerprofils der UserID des gerade aktiven Benutzers entspricht.

PHP Source code

1
WCF::getTPL()->assign('userID'$this->userID);


Bei $this->userID müsstest Du halt schauen, ob das so gespeichert ist, ansonsten

PHP Source code

1
intval($_GET['userID'])


Im Template sollte dann folgendes funktionieren:

HTML

1
{if $this->user->userID == $userID}


Viele Grüße
Sebastian
WCF Solutions - Leistungsfähige Filebase, Shoutbox und mehr für dein WCF! Endlich auch das Infinite Portal mit Nachrichten-, Artikel-, Link-, Gästebuch- und Seitensystem verfügbar!
Kein Support von Paketen via PN, E-Mail oder IM!

This post has been edited 2 times, last edit by "MysteryForce" (Apr 9th 2009, 12:29pm)