Hallo, Gast! (Registrieren)

Letzte Ankündigung: MyBB 1.8.38 veröffentlicht (30.04.24)


Benutzer, die gerade dieses Thema anschauen: 4 Gast/Gäste
Optionales Feld
#1
Hallo Community,

ich habe eine Frage bezüglich der Optionalen Benutzerfelder im Profil, konnte dazu keinen passenden Beitrag finden. Wenn sich ein neuer User registriert hat, kann dieser in seinen Profil seine Website eintragen unter Optionale Felder. Ich hätte es gerne so - falls möglich - das diese Option nur bestimmten Usern zur Verfügung steht. Wo muss ich den Code ändern und wie sähe der neue Code aus? Ich bin für jede Hilfe dankbar und wünsche allen Menschen einen guten Rutsch ins neue Jahr 2013!

LG Torie
Zitieren
#2
Das Website-Feld ist doch bei MyBB bereits ein Standard-Feld, wieso also ein weiteres Feld?

Naja, zur Frage: In der usercp.php. Du musst prüfen, ob der Benutzer in der berechtigten Benutzergruppe ist und dann die fidX (X = Feld ID, kann man über die DB oder das ACP ermitteln) auslesen.
Zitieren
#3
Hallo Falkenauge Mihawk,

danke Dir für deine Hilfe! Ein neues möchte ich ja gar nicht sondern das vorhandene so umändern, dass neu Registrierte Mitglieder keine Website eintragen können sondern nur die User welche zB. 10 Beiträge haben etc. Ich weiß nur nicht wo ich das machen muss.

LG Torie
Zitieren
#4
In der usercp.php - ca. Zeile 325 die If-Abfrage in ein weiteres stecken, bei der die Bedingung halt ist, ob er die notwendige Berechtigung hat. Als else eine Ersetzung der $user['website']-Variable durch ein verstecktes Feld, in dem die URL gespeichert ist (für den Fall der Fälle). Jetzt musst du dann wenn die Bedingung zutrifft, dann noch die Tabellen-Spalte in die Variable ergänzen. In etwa so:
PHP-Code:
if(/*BEDINGUNG*/)
{
    if(
$user['website'] == "" || $user['website'] == "http://")
    {
        
$user['website'] = "<tr>
<td colspan=\"3\"><span class=\"smalltext\">
{$lang->website_url}</span></td>
</tr>
<tr>
<td colspan=\"3\"><input type=\"text\" class=\"textbox\" name=\"website\" size=\"25\" maxlength=\"75\" value=\"http://\" /></td>
</tr>"
;
    }
    else
    {
        
$user['website'] = "<tr>
<td colspan=\"3\"><span class=\"smalltext\">
{$lang->website_url}</span></td>
</tr>
<tr>
<td colspan=\"3\"><input type=\"text\" class=\"textbox\" name=\"website\" size=\"25\" maxlength=\"75\" value=\""
.htmlspecialchars_uni($user['website'])."\" /></td>
</tr>"
;
    }
}
else
{
    
$user['website'] = "<input type=\"hidden\" value=\"{$user['website']}\" />";


Und im Template (usercp_profile) dann die ganze Textsache und das Feld durch die Variable ersetzen.
Code:
<tr>
<td colspan="3"><span class="smalltext">{$lang->website_url}</span></td>
</tr>
<tr>
<td colspan="3"><input type="text" class="textbox" name="website" size="25" maxlength="75" value="{$user['website']}" /></td>
</tr>
=>
Code:
{$user['website']}

Code ist nicht getestet, sollte aber das grundsätzliche erklären.
Zitieren
#5
Hallo Falkenauge Mihawk,

ein frohes neues Jahr! Danke Dir für deine Hilfestellung! Gestern bin ich irgendwie nicht weitergekommen. Du hast geschrieben das ich ab Zeile 325 die If-Abfrage in ein weiteres stecken soll, hab aber nicht verstanden wie du es meinst? Bei mir gibt es solche Zahlen Zeilen nicht, kann also nicht sehen wo die 325 Beginnt. Dann hatte ich nach den ersten PHP-Code von Dir in der usercp.php gesucht, konnte die aber nicht finden.

Wenn ich deinen ersten Code integrieren muss, also den kompletten, wo genau muss ich den dann unterbringen (Drüber, drunter und bei welchen Code)?

Zitat:Als else eine Ersetzung der $user['website']-Variable durch ein verstecktes Feld, in dem die URL gespeichert ist (für den Fall der Fälle).

Das kapier ich leider gar nicht? Ich kenne mich nicht aus und da brauche ich genau Anleitung, sorry!

LG Torie
Zitieren
#6
Frohes neues Jahr!

(01.01.2013, 10:26)Torie schrieb: Hallo Falkenauge Mihawk,

ein frohes neues Jahr! Danke Dir für deine Hilfestellung! Gestern bin ich irgendwie nicht weitergekommen. Du hast geschrieben das ich ab Zeile 325 die If-Abfrage in ein weiteres stecken soll, hab aber nicht verstanden wie du es meinst? Bei mir gibt es solche Zahlen Zeilen nicht, kann also nicht sehen wo die 325 Beginnt. Dann hatte ich nach den ersten PHP-Code von Dir in der usercp.php gesucht, konnte die aber nicht finden.
Benutzst du Notepad? Rolleyes
Leg dir einen richtigen Source-Code-Editor zu (z.B. Notepad++).

Zitat:Wenn ich deinen ersten Code integrieren muss, also den kompletten, wo genau muss ich den dann unterbringen (Drüber, drunter und bei welchen Code)?
Das ist die If-Abfrage, die wir in ein weiteres If stecken.
PHP-Code:
    if($user['website'] == "" || $user['website'] == "http://")
    {
        
$user['website'] = "http://";
    }
    else
    {
        
$user['website'] = htmlspecialchars_uni($user['website']);
    } 
Falls du meinen Code reinwerfen willst, dann musst du diesen Teil ersetzen. Jedoch musst du noch bei /* BEDINGUNG */ eine Bedingung setzen, die erfüllt werden muss.

Zitat:
Zitat:Als else eine Ersetzung der $user['website']-Variable durch ein verstecktes Feld, in dem die URL gespeichert ist (für den Fall der Fälle).

Das kapier ich leider gar nicht? Ich kenne mich nicht aus und da brauche ich genau Anleitung, sorry!

LG Torie
Wenn jemand die Berechtigung nicht mehr hat, wollen wir ein verstecktes Feld haben, in dem der letzte Wert des Feldes gespeichert wird. Ist jedoch nur optional. Du kannst auch das versteckte Feld weg lassen.

Dann wäre es statt
PHP-Code:
$user['website'] = "<input type=\"hidden\" value=\"{$user['website']}\" />"
PHP-Code:
$user['website'] = ""

Gruss Falkenauge Mihawk
Zitieren
#7
Der von Falkenauge Mihawk vorgeschlagenen PHP-Code könnte, ergänzt um die Abfrage, z.B. so ausehenn
PHP-Code:
$query $db->simple_select("users""postnum""uid='".$user['uid']."'");
$result $db->fetch_array($query);
if(
$result['postnum'] > 25)
{
    if(
$user['website'] == "" || $user['website'] == "http://")
    {
        
$user['website'] = "<tr>
<td colspan=\"3\"><span class=\"smalltext\">
{$lang->website_url}</span></td>
</tr>
<tr>
<td colspan=\"3\"><input type=\"text\" class=\"textbox\" name=\"website\" size=\"25\" maxlength=\"75\" value=\"http://\" /></td>
</tr>"
;
    }
    else
    {
        
$user['website'] = "<tr>
<td colspan=\"3\"><span class=\"smalltext\">
{$lang->website_url}</span></td>
</tr>
<tr>
<td colspan=\"3\"><input type=\"text\" class=\"textbox\" name=\"website\" size=\"25\" maxlength=\"75\" value=\""
.htmlspecialchars_uni($user['website'])."\" /></td>
</tr>"
;
    }
}
else
{
    
$user['website'] = "<input type=\"hidden\" value=\"{$user['website']}\" />";

Damit wären nur User in der Lage, eine Homepage im Benutzer-CP einzutragen, wenn sie mehr als 25 Beiträge haben.
viele Grüße
Jockl
übersetzte und eigene Plugins
Zitieren
#8
Hallo ihr Beiden,

habt vielen Dank für Eure Hilfe, werde da heute Abend versuchen alles umzusetzen, hätte aber dennoch eine für mich wichtige Frage. Könnte man obigen Text auch Benutzerabhängig machen anstatt Benutzergruppen abhängig? Mir ging es im Grunde darum, dass neue User nur dann ihre Website verlinken dürfen, wenn Sie einen Gegenlink von meiner Website auf Ihrer setzen. Wie müsste ich jeweiligen Code dann anpassen?

@Falkenauge Mihawk, ich habe mir den Notepad++ heruntergeladen, hoffe das ich mit diesen die Zeilen sehen kann, danke Dir nochmal für den Tipp!

LG Torie
Zitieren
#9
Woran sind denn solche User zu erkennen, wenn sie einen Gegenlink von Deiner Website auf Ihrer gesetzt haben. Werden sie von Dir in eine entsprechende Usergruppe übernommen? Wenn dem so wäre, dann müsste die Abfrage eben auf die Usergruppen ausgerichtet werden....
viele Grüße
Jockl
übersetzte und eigene Plugins
Zitieren
#10
Hallo Jockl,

danke für deine Hilfe! In meiner alten Forensoftware konnte ich es so handhaben, das neue Mitglieder keine Option des Websiten Eintragens hatten, diese war für Sie nicht sichtbar. Erst als Sie einen gegen Link gesetzt hatten (Hatte neue Mitglieder über die Option des gegenseitigen Linktausches im Forum informiert), was ich zuvor Kontrollierte, konnte ich im Adminbereich einzelne User den Eintrag manuell erlauben. Ich brauchte dann die Option nur für jeweiligen User freischalten. Es war sehr nützlich, da mein Forum nicht mehr als Werbeplattform benutzt wurde. Würde das halt gerne auch hier haben, weiß nur nicht wie ich das realisieren kann.

Wichtig wäre, das die Option des Homepage eintragens für neue Mitglieder erst einmal wechfällt. Wenn Interesse auf gegenseitigen ,,Linktausch" besteht, wollte ich halt manuell jeweilige User die Option freistellen. Wie könnte ich das bewerkstelligen?

Mit Gruppen wollte ich da weniger arbeiten.

LG Torie
Zitieren