Es ist mir gelungen, die Anzeige von "Danken" in die Suchergebnisse einzubauen (wenn die Beitragsinhalte gezeigt werden). Es ist keine sehr saubere Lösung aus dem Programmierer-Sicht, aber trotzdem dachte ich, dass ich es euch zeige, vielleicht kann jemand etwas damit anfangen.
Am Ende der Datei
root/thanks.php habe ich zwei Funktionen dupliziert, die auch früher vorkommen, aber andere Arrays nutzen (solche, die in view_topic.php benutzt werden):
Code: Alles auswählen
// display the text/image saying either to add or remove thanks
function search_get_thanks_text($post_id)
{
global $db, $user, $tpl_ary;
if (already_thanked($post_id, $user->data['user_id']))
{
$tpl_ary = array_merge($tpl_ary, array(
'THANK_ALT' => $user->lang['REMOVE_THANKS'],
'THANK_ALT2' => $user->lang['THANK_POST2'],
'THANKS_IMG' => '/removethanks.gif',
));
return;
}
$tpl_ary = array_merge($tpl_ary, array(
'THANK_ALT' => $user->lang['THANK_POST1'],
'THANK_ALT2' => $user->lang['THANK_POST2'],
'THANKS_IMG' => '/thankposts.gif',
));
return;
}
// stuff goes here to avoid over-editing viewtopic.php
function search_output_thanks($user_id)
{
global $db, $user, $poster_id, $tpl_ary, $row, $phpEx, $topic_data, $phpbb_root_path;
if (!empty($tpl_ary))
{
$forum_id = (isset($forum_id)) ? $forum_id : 0;
$number = get_thanks_number($row['post_id']) . ' ';
$pl_text = $user->lang['THANK_TEXT_2pl'];
if ($number == 1)
{
$pl_text = $user->lang['THANK_TEXT_2'];
$number = '';
}
search_get_thanks_text($row['post_id']);
$tpl_ary = array_merge($tpl_ary, array(
'THANKS_GENDER' => ' ' . get_gender($user_id),
'THANKS' => get_thanks($row['post_id']),
'THANKS_LINK' => append_sid("{$phpbb_root_path}viewtopic.$phpEx", 'p=' . $row['post_id']) . (($topic_data['topic_type'] == POST_GLOBAL) ? '&f=' . $forum_id : '') . '&' . get_thanks_link($row['post_id']) . '=' . $row['post_id'] . '&to_id=' . $poster_id . '#p' . $row['post_id'],
'THANK_TEXT' => $user->lang['THANK_TEXT_1'] . ' ' . $number . $pl_text . ' ',
'POSTER_RECEIVE_COUNT' => get_user_count($poster_id, true),
'POSTER_GIVE_COUNT' => get_user_count($poster_id, false),
'S_IS_OWN_POST' => ($user->data['user_id'] == $poster_id) ? true : false,
));
}
}
Dann öffne
root/search.php und suche nach:
Code: Alles auswählen
// Start session management
$user->session_begin();
$auth->acl($user->data);
$user->setup('search');
Füge danach:
hinzu.
Code: Alles auswählen
$tpl_ary = array(
'POST_AUTHOR_FULL' => get_username_string('full', $row['poster_id'], $row['username'], $row['user_colour'], $row['post_username']),
'POST_AUTHOR_COLOUR' => get_username_string('colour', $row['poster_id'], $row['username'], $row['user_colour'], $row['post_username']),
'POST_AUTHOR' => get_username_string('username', $row['poster_id'], $row['username'], $row['user_colour'], $row['post_username']),
'U_POST_AUTHOR' => get_username_string('profile', $row['poster_id'], $row['username'], $row['user_colour'], $row['post_username']),
'POST_SUBJECT' => $row['post_subject'],
'POST_DATE' => (!empty($row['post_time'])) ? $user->format_date($row['post_time']) : '',
'MESSAGE' => $row['post_text']
);
Füge danach:
hinzu.
Anschließend öffne
root/styles/prosilver/template/search_results.html und suche nach:
Füge direkt danach:
Code: Alles auswählen
<!-- IF searchresults.THANKS -->
<div style="float:left;margin-top:20px;margin-bottom:20px;color:#B53151;">{searchresults.THANK_TEXT}{searchresults.POST_AUTHOR_FULL}{searchresults.THANKS_GENDER}:<br /> {searchresults.THANKS}</div>
<!-- ENDIF -->
hinzu.
Es wäre noch super, herauszufinden, wie man nur solche Beiträge anzeigt, die auch ein Danke erhalten haben. Ich stelle es mir nicht sehr kompliziert vor, bin aber derzeit zu müde, um darüber nachzudenken.