Ich bin gerade dabei ein neues Postbit-Theme zu erstellen, das entsprechende Template und die Abfrage im Benutzer-CP war da noch die leichteste Aufgabe.
Denn ich finde die entsprechenden Abfragen in den Dateien einfach nicht, in denen der Wert von der Datenbank abgerufen wird, welches Postbit verwendet werden soll.
Wo sind diese?
/inc/functions_post.php, am Ende der Funktion build_postbit() (~Zeile 629-636)
Schon etwas weiter, Danke
.
Allerdings brauch ich jetzt noch die Abfrage von "classicpostbit" in der _users-Tabelle. In der functions_post.php kann nur eine zusätzliche Standardeinstellung vom Forum angelegt werden, nicht jedoch das gewählte vom Benutzer-CP.
EDIT: Hab in /datahandlers/user.php folgendes gefunden, was genau bewirkt die "verify_yesno_option"?
PHP-Code:
$options = &$this->data['options'];
if($mybb->settings['postlayout'] == 'classic')
{
$this->verify_yesno_option($options, 'classicpostbit', 1);
}
else
{
$this->verify_yesno_option($options, 'classicpostbit', 0);
}
Folgende Werte können in "classicpostbit" in der users-Tabelle eingetragen werden:
0 = horizontal
1 = classic
2 = Custom
inc/class_session.php ab Zeile 244.
Danke euch, funktioniert perfekt
.
Aufgrund mangelnder Tests haben wir jetzt erst einen Fehler entdeckt:
Im BenutzerCP stehen bei der Beitragsanzeige folgende Auswahlmöglichkeiten zur Verfügung:
Horizontal (value: horizontal)
Klassisch (value: classic)
CH (value: ch)
In der inc/datahandlers/user.php wird folgender Code ausgeführt, der die Auswahl in die DB speichert: (Zeile ~595)
PHP-Code:
if($mybb->settings['postlayout'] == 'ch')
{
$options['classicpostbit'] = 2;
}
elseif($mybb->settings['postlayout'] == 'classic')
{
$this->verify_yesno_option($options, 'classicpostbit', 1);
}
else
{
$this->verify_yesno_option($options, 'classicpostbit', 0);
}
Problem ist jetzt allerdings, dass die "2" nicht gespeichert wird, stattdessen wird immer "1" gespeichert. Die If-Abfrage ist nicht das Problem, denn sobald ich statt der 2 eine 1 oder 0 eintrage, funktioniert es.
Es muss also noch irgendwo einen Filter geben, der nur 1 oder 0 erlaubt. Die Spalte (classicpostbit in
_users) in der DB wurde von int(1) auf int(11) erhöht.
Ich glaube, du hast den Sinn dieser Abfrage nicht erkennt. Der ursprüngliche Code schaut, was im ACP eingestellt ist und schaut, ob man etwas anderes angegeben hat. Das ist der 3. Parameter von verify_yesno_option. Der angegebene Wert steckt schon im $options, was im ersten Parameter drin ist.
PS: int(1) reicht locker um eine 2 zu speichern, int(11) sind elfstellige Zahlen!
Okay, aber nach wie vor funktioniert das Speichern nicht.
Wie oben im Code steht, mach ich das:
PHP-Code:
$options['classicpostbit'] = 2;
Das $options-Array wird zweimal gespeichert, einmal per Referenz und unterhalb wirds nochmal direkt abgespeichert:
PHP-Code:
$options = &$this->data['options'];
// ...
$this->data['options'] = $options;
Ich kann mit dem geposteten Teil des Codes leider nicht viel anfangen...