Hallo, Gast! (Registrieren)

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


Benutzer, die gerade dieses Thema anschauen: 2 Gast/Gäste
Eigene Modifiaktion geht nicht
#1
Hallo,

bastel gerade an einer eigenen Modifikation. Das Endziel soll sein, das die zusätzlichen Profilfelder nochmal in Unterkategorien gefasst werden können.

Jetzt wollte ich erstmal testen wie wit ich mit den Änderungen der Dateien komme und stoße jetzt auf ein Problem.

Also im Template ist usercp_profile_profilefields für die Anzeige der zusätzlichen Dateien zuständig:

Original Version:
Code:
<br />
<fieldset class="trow2">
<legend><strong>{$lang->additional_information}</strong></legend>
<table cellspacing="0" cellpadding="{$theme['tablespace']}" width="100%">
{$customfields}
</table>
</fieldset>

Dort habe ich jetzt den Code einfach verdoppelt (zum testen):
Code:
<br />
<fieldset class="trow2">
<legend><strong>{$lang->additional_information}</strong></legend>
<table cellspacing="0" cellpadding="{$theme['tablespace']}" width="100%">
{$customfields}
</table>
</fieldset>

<br />
<fieldset class="trow2">
<legend><strong>Test</strong></legend>
<table cellspacing="0" cellpadding="{$theme['tablespace']}" width="100%">
{$customfields}
</table>
</fieldset>

Das ganze wird auch schön zweimal angezeigt, also habe ich jetzt in den PHP Dateien nach der entsprechenden Stelle gesucht, das ist dann meiner Meinung nach die user.php. Dort glaube ich der folgende Bereich:
PHP-Code:
    // Custom profile fields baby!
    
$altbg "trow1";
    
$requiredfields '';
    
$customfields '';
    
$query $db->simple_select(TABLE_PREFIX."profilefields""*""editable='yes'", array('order_by' => 'disporder'));
    while(
$profilefield $db->fetch_array($query))
    {
        
[...]

    if(
$customfields)
    {
        eval(
"\$customfields = \"".$templates->get("usercp_profile_profilefields")."\";");
    } 

Da ja später in den zweiten Bereich was anderes soll als in den ersten habe ich den Bereich auch kopiert und darunter nochnmal eingefügt und dann in diesem neu eingefügten bereich alle $custemfields auf $test umgeändert. Und die Template Datei so geändert:

Code:
<br />
<fieldset class="trow2">
<legend><strong>{$lang->additional_information}</strong></legend>
<table cellspacing="0" cellpadding="{$theme['tablespace']}" width="100%">
{$customfields}
</table>
</fieldset>

<br />
<fieldset class="trow2">
<legend><strong>Test</strong></legend>
<table cellspacing="0" cellpadding="{$theme['tablespace']}" width="100%">
{$test}
</table>
</fieldset>


Leider bleibt jetzt der zweite Bereich, der ja mit $customfields gefüllt war leer.

Woran könnte das liegen, ich habe doch in der php Datei in dem zuständigen Absatz die $customfields ind $test geändert. An sich müsste er doch das gleiche anzeigen wie vorher weil die beiden Codeabschnitt identisch sind bis auf $test halt
Zitieren
#2
Poste mal bitte den geänderten Code hier. An sich sollte es gehen.

Gruß,
Michael
[Bild: banner.png]
Support erfolgt NUR im Forum!
Bitte gelöste Themen als "erledigt" markieren.
Beiträge mit mangelhafter Rechtschreibung/Grammatik werden kommentarlos gelöscht.
Zitieren
#3
Ich hänge mal die usercp.php als Anhang dran.

Hier de Code von dem Template:

Code:
<br />
<fieldset class="trow2">
<legend><strong>{$lang->additional_information}</strong></legend>
<table cellspacing="0" cellpadding="{$theme['tablespace']}" width="100%">
{$customfields}
</table>
</fieldset>

<br />
<fieldset class="trow2">
<legend><strong>Hardwar</strong></legend>
<table cellspacing="0" cellpadding="{$theme['tablespace']}" width="100%">
{$test}
</table>
</fieldset>


Angehängte Dateien
.php   usercp.php (Größe: 72,68 KB / Downloads: 15)
Zitieren
#4
Ähm, ich versuche das selbe auch. Jetzt habe ich das im Tamplate verdoppelt. Es wird aber nicht 2mal angezeigt. Mache ich was falsch?
Zitieren
#5
Bearbeitest du das richtige Template-Set?
[Bild: banner.png]

Bitte die Foren-Regeln beachten und im Profil die verwendete MyBB-Version angeben.
Zitieren
#6
Ja, mache ich.
Und bei meinem Versuch habe ich die member.php bearbeitet.
Ich Habe den Code eingefügt:
PHP-Code:
$altbg "trow1";
        
$query $db->simple_select(TABLE_PREFIX."profilefields2""*""editable='yes'", array('order_by' => 'disporder'));
        while(
$profilefield2 $db->fetch_array($query))
        {
            
$profilefield2['type'] = htmlspecialchars_uni($profilefield2['type']);
            
$thing explode("\n"$profilefield2['type'], "2");
            
$type trim($thing[0]);
            
$options $thing[1];
            
$select '';
            
$field "fid{$profilefield2['fid']}";
            if(
$errors)
            {
                
$userfield $mybb->input['profile_fields2'][$field];
            }
            else
            {
                
$userfield '';
            }
            if(
$type == "multiselect")
            {
                if(
$errors)
                {
                    
$useropts $userfield;
                }
                else
                {
                    
$useropts explode("\n"$userfield);
                }
                if(
is_array($useropts))
                {        
                    foreach(
$useropts as $key => $val)
                    {
                        
$seloptions[$val] = $val;
                    }
                }
                
$expoptions explode("\n"$options);
                if(
is_array($expoptions)) 
                {
                    foreach(
$expoptions as $key => $val)
                    {
                        
$val trim($val);
                        
$val str_replace("\n""\\n"$val);

                        
$sel "";
                        if(
$val == $seloptions[$val])
                        {
                            
$sel "selected=\"selected\"";
                        }
                        
$select .= "<option value=\"$val\" $sel>$val</option>\n";
                    }
                    if(!
$profilefield2['length'])
                    {
                        
$profilefield2['length'] = 3;
                    }
                    
$code "<select name=\"profile_fields2[$field][]\" size=\"$profilefield2[length]\" multiple=\"multiple\">$select</select>";
                }
            }
            elseif(
$type == "select")
            {
                
$expoptions explode("\n"$options);
                if(
is_array($expoptions))
                {
                    foreach(
$expoptions as $key => $val)
                    {
                        
$val trim($val);
                        
$val str_replace("\n""\\n"$val);
                        
$sel "";
                        if(
$val == $userfield)
                        {
                            
$sel "selected=\"selected\"";
                        }
                        
$select .= "<option value=\"$val\" $sel>$val</option>";
                    }
                    if(!
$profilefield2['length'])
                    {
                        
$profilefield2['length'] = 1;
                    }
                    
$code "<select name=\"profile_fields2[$field]\" size=\"$profilefield2[length]\">$select</select>";
                }
            }
            elseif(
$type == "radio")
            {
                
$expoptions explode("\n"$options);
                if(
is_array($expoptions))
                {
                    foreach(
$expoptions as $key => $val)
                    {
                        
$checked "";
                        if(
$val == $userfield)
                        {
                            
$checked "checked=\"checked\"";
                        }
                        
$code .= "<input type=\"radio\" class=\"radio\" name=\"profile_fields2[$field]\" value=\"$val\" $checked /> <span class=\"smalltext\">$val</span><br />";
                    }
                }
            }
            elseif(
$type == "checkbox")
            {
                if(
$errors)
                {
                    
$useropts $userfield;
                }
                else
                {
                    
$useropts explode("\n"$userfield);
                }
                if(
is_array($useropts))
                {
                    foreach(
$useropts as $key => $val)
                    {
                        
$seloptions[$val] = $val;
                    }
                }
                
$expoptions explode("\n"$options);
                if(
is_array($expoptions)) 
                {
                    foreach(
$expoptions as $key => $val)
                    {
                        
$checked "";
                        if(
$val == $seloptions[$val])
                        {
                            
$checked "checked=\"checked\"";
                        }
                        
$code .= "<input type=\"checkbox\" class=\"checkbox\" name=\"profile_fields2[$field][]\" value=\"$val\" $checked /> <span class=\"smalltext\">$val</span><br />";
                    }
                }
            }
            elseif(
$type == "textarea")
            {
                
$value htmlspecialchars_uni($userfield);
                
$code "<textarea name=\"profile_fields2[$field]\" rows=\"6\" cols=\"30\" style=\"width: 95%\">$value</textarea>";
            }
            else
            {
                
$value htmlspecialchars_uni($userfield);
                
$code "<input type=\"text\" name=\"profile_fields2[$field]\" class=\"textbox\" size=\"$profilefield2[length]\" maxlength=\"$profilefield2[maxlength]\" value=\"$value\" />";
            }
            if(
$profilefield2['required'] == "yes")
            {
                eval(
"\$requiredfields .= \"".$templates->get("member_register_customfield")."\";");
            }
            
$code '';
            
$select '';
            
$val '';
            
$options '';
            
$expoptions '';
            
$useropts '';
            
$seloptions '';
        }
        if(
$requiredfields)
        {
            eval(
"\$requiredfields = \"".$templates->get("member_register_requiredfields")."\";");
        }
        if(!
$fromreg)
        {
            
$allownoticescheck "checked=\"checked\"";
            
$hideemailcheck '';
            
$emailnotifycheck '';
            
$receivepmscheck "checked=\"checked\"";
            
$pmpopupcheck "checked=\"checked\"";
            
$emailpmnotifycheck '';
            
$invisiblecheck '';
            if(
$mybb->settings['dstcorrection'] == "yes")
            {
                
$enabledstcheck "checked=\"checked\"";
            }
            
        } 

Da habe ich profilefields in profilefields2 umgewandelt und in der MySQL die Tabelle eingefügt. Dann habe ich im admin-Ordner Profilefields.php kopiert und Profilefield2.php genannt. Darin alles abgeändert.
Und ich habe in "inc/languages/english/admin die datei " profilefields.lang.php" kopiert und in "profilefields.lang.php" umbenannt.
Es wird jetzt im Adminberei angezeigt. Jedoch nicht im Profil.

Ach, ist der Code richtig abgewandelt?
Zitieren
#7
Das hätte u.U. eine gute Anleitung werden können, wie man neue Profilfelder, die entsprechenden Templates erstellt und die php-Datei(en) anpasst. Leider bricht er ab, wo es gerade spannend wurde.

Schade, das passiert recht oft. Da meint man, endlich etwas über die Suche gefunden zu haben und dann kommt entweder so etwas heraus oder man stößt schlussendlich auf einen toten Link. Rolleyes
viele Grüße
Jockl
übersetzte und eigene Plugins
Zitieren