Hi, ich stand kürzlich auch vor so einem Problem und habe es - "quick and dirty" - gelöst
In phpmyadmin, erstelle in mybb_threads ein weiteres Feld das genau so heisst wie du es im ACP bei "Fieldname: (backend)" bennannt hast.
Im Plugin, suche nach:
PHP-Code:
$plugins->add_hook('datahandler_post_update', 'add_inputs', 100000);
Füge darunter ein:
PHP-Code:
$plugins->add_hook('datahandler_post_update_thread', 'add_inputs_thread', 100000);
$plugins->add_hook('datahandler_post_insert_thread', 'add_inputs_thread', 100000);
Füge vor ?> ein:
PHP-Code:
function add_inputs_thread(&$thread) {
global $mybb, $db;
$callback = 0;
if(isset($thread->thread_update_data['subject'])) {
$callback = 1;
}
$options = array(
"order_by" => "ord",
"order_dir" => "ASC"
);
$query = $db->simple_select(TABLE_PREFIX."extrafields", "*", "", $options);
while($field = $db->fetch_array($query)) {
if(!empty($mybb->input[$field['fieldname']])){
if($callback == 1) {
verify_extrafielddata($field['fieldname'],$mybb->input[$field['fieldname']]);
$thread->thread_update_data[$field['fieldname']] = $db->escape_string($mybb->input[$field['fieldname']]);
} else {
$thread->thread_insert_data[$field['fieldname']] = $db->escape_string($mybb->input[$field['fieldname']]);
}
}
}
}
Ergebniss:
Jetzt hast du die Daten da wo du sie brauchst, in der Thread Tabelle.
Als letztes sind nur noch die Templates zu ändern:
Forenanzeige Templates
-> forumdisplay_thread
Suchen nach:
DAVOR:
Zeige Thema Templates
-> showthread
Gleiche Prozedur wie zuvor
Update:
Wer noch was für die Sicherheit tun möchte, füge noch folgende funktion oberhalb der add_inputs funktionen ein:
PHP-Code:
function verify_extrafielddata($fieldname,$postoptions){
global $mybb, $db;
$query = $db->query("
SELECT options
FROM mybb_extrafields
WHERE fieldname = '".$db->escape_string($fieldname)."' && CONCAT(',',options,',') LIKE '%,".$db->escape_string($postoptions).",%'
");
if(!$db->num_rows($query)){die('Fehler!');}
}
In den add_inputs Funktionen ist diese Funtion dann wie folgt einzufügen:
Suche nach
Füge darunter ein:
PHP-Code:
verify_extrafielddata($field['fieldname'],$mybb->input[$field['fieldname']]);
Wer möchte das man die Box dann auch nur beim ersten post sieht der änder die funktion add_fields_edit wie folgt:
PHP-Code:
function add_fields_edit() {
global $mybb, $db, $fields_start, $fields_end, $templates, $theme, $post, $fid, $thread;
if($post['pid'] == $thread['firstpost']){
und am Ende der Funktion gehört noch } angehängt.
Die folgenden Zeilen könnt ihr dann auskommentieren:
PHP-Code:
# $plugins->add_hook('newreply_start', 'add_fields', 1000000);
# $plugins->add_hook('datahandler_post_insert_post', 'add_inputs', 100000);
# $plugins->add_hook('datahandler_post_insert_thread_post', 'add_inputs', 100000);
# $plugins->add_hook('datahandler_post_update', 'add_inputs', 100000);
Demo:
http://www.profi-webmaster.com/forumdisplay.php?fid=14