How To: Heutige Themen und Neue Themen in der Suche - Dave - 07.01.2008
Ich wurde innerhalb der letzten Woche zweimal darauf angesprochen, ob es möglich wäre, etwas wie "Heutige Themen ansehen" zu erschaffen, also eine Funktion in der Suche, genau wie "Heutige Beiträge ansehen". Ich dachte, das wäre einiges an Arbeit, stellt sich heraus, es sind gerade mal zwei Zeilen nötig zum Abändern der Suche:
Öffne die search.php
Suche nach
PHP-Code: elseif($mybb->input['action'] == "getdaily") { if($mybb->input['days'] < 1) { $days = 1; } else { $days = intval($mybb->input['days']); } $datecut = time()-(86400*$days);
$where_sql = "t.lastpost >='".$datecut."'";
if($mybb->input['fid']) { $where_sql .= " AND t.fid='".intval($mybb->input['fid'])."'"; } $unsearchforums = get_unsearchable_forums(); if($unsearchforums) { $where_sql .= " AND t.fid NOT IN ($unsearchforums)"; } $inactiveforums = get_inactive_forums(); if($inactiveforums) { $where_sql .= " AND t.fid NOT IN ($inactiveforums)"; }
$sid = md5(uniqid(microtime(), 1)); $searcharray = array( "sid" => $db->escape_string($sid), "uid" => $mybb->user['uid'], "dateline" => time(), "ipaddress" => $db->escape_string($session->ipaddress), "threads" => '', "posts" => '', "searchtype" => "titles", "resulttype" => "threads", "querycache" => $db->escape_string($where_sql), );
$plugins->run_hooks("search_do_search_process"); $db->insert_query(TABLE_PREFIX."searchlog", $searcharray); redirect("search.php?action=results&sid=".$sid, $lang->redirect_searchresults); }
Füge danach ein:
PHP-Code: elseif($mybb->input['action'] == "getdailythreads") { if($mybb->input['days'] < 1) { $days = 1; } else { $days = intval($mybb->input['days']); } $datecut = time()-(86400*$days);
$where_sql = "t.dateline >='".$datecut."'";
if($mybb->input['fid']) { $where_sql .= " AND t.fid='".intval($mybb->input['fid'])."'"; } $unsearchforums = get_unsearchable_forums(); if($unsearchforums) { $where_sql .= " AND t.fid NOT IN ($unsearchforums)"; } $inactiveforums = get_inactive_forums(); if($inactiveforums) { $where_sql .= " AND t.fid NOT IN ($inactiveforums)"; }
$sid = md5(uniqid(microtime(), 1)); $searcharray = array( "sid" => $db->escape_string($sid), "uid" => $mybb->user['uid'], "dateline" => time(), "ipaddress" => $db->escape_string($session->ipaddress), "threads" => '', "posts" => '', "searchtype" => "titles", "resulttype" => "threads", "querycache" => $db->escape_string($where_sql), );
$plugins->run_hooks("search_do_search_process"); $db->insert_query(TABLE_PREFIX."searchlog", $searcharray); redirect("search.php?action=results&sid=".$sid, $lang->redirect_searchresults); }
Das ist alles. Jetzt müsst ihr nur noch irgendwo einen Link setzen, der auf search.php?action=getdailythreads zugreift.
RE: How To: Heutige Themen in der Suche - Dave - 07.01.2008
Ebenso funktioniert das Ganze natürlich auch für "Neue Themen ansehen":
Öffne seach.php
Suche nach:
PHP-Code: elseif($mybb->input['action'] == "getnew") { $where_sql = "t.lastpost >= '".$mybb->user['lastvisit']."'";
if($mybb->input['fid']) { $where_sql .= " AND t.fid='".intval($mybb->input['fid'])."'"; } $unsearchforums = get_unsearchable_forums(); if($unsearchforums) { $where_sql .= " AND t.fid NOT IN ($unsearchforums)"; } $inactiveforums = get_inactive_forums(); if($inactiveforums) { $where_sql .= " AND t.fid NOT IN ($inactiveforums)"; }
$sid = md5(uniqid(microtime(), 1)); $searcharray = array( "sid" => $db->escape_string($sid), "uid" => $mybb->user['uid'], "dateline" => time(), "ipaddress" => $db->escape_string($session->ipaddress), "threads" => '', "posts" => '', "searchtype" => "titles", "resulttype" => "threads", "querycache" => $db->escape_string($where_sql), );
$plugins->run_hooks("search_do_search_process"); $db->insert_query(TABLE_PREFIX."searchlog", $searcharray); redirect("search.php?action=results&sid=".$sid, $lang->redirect_searchresults); }
Füge danach ein:
PHP-Code: elseif($mybb->input['action'] == "getnewthreads") { $where_sql = "t.dateline >= '".$mybb->user['lastvisit']."'";
if($mybb->input['fid']) { $where_sql .= " AND t.fid='".intval($mybb->input['fid'])."'"; } $unsearchforums = get_unsearchable_forums(); if($unsearchforums) { $where_sql .= " AND t.fid NOT IN ($unsearchforums)"; } $inactiveforums = get_inactive_forums(); if($inactiveforums) { $where_sql .= " AND t.fid NOT IN ($inactiveforums)"; }
$sid = md5(uniqid(microtime(), 1)); $searcharray = array( "sid" => $db->escape_string($sid), "uid" => $mybb->user['uid'], "dateline" => time(), "ipaddress" => $db->escape_string($session->ipaddress), "threads" => '', "posts" => '', "searchtype" => "titles", "resulttype" => "threads", "querycache" => $db->escape_string($where_sql), );
$plugins->run_hooks("search_do_search_process"); $db->insert_query(TABLE_PREFIX."searchlog", $searcharray); redirect("search.php?action=results&sid=".$sid, $lang->redirect_searchresults); }
Diesmal lautet der Link search.php?action=getnewthreads
RE: How To: Heutige Themen und Neue Themen in der Suche - Jockl - 27.03.2008
zufällig reingestolpert.....
Danke Dave, für diese Modifikationen! Gibt dem Admin noch ein wenig mehr die Möglichkeit, den Wünschen der User nachzukommen.
Eine Frage zu einer weiteren, möglichen Variante hätte ich noch:
ist es vorstellbar, dass der User z.B. über ein Textfeld oder ein DropDown-Menü die Möglichkeit erhält, den Zeitraum anzugeben, für den er die neuen Beiträge/Themen ausgegeben haben möchte? Meinem Verständnis nach würde das einem Ändern des lastactive/lastvisit-Datums desjenigen Users gleichkommen.
Ob die Eingabe des Users nun in Tage und/oder in Tage inkl. Stundenangabe erfolgen soll ist evtl. nicht ganz so wichtig. Ich denke, manch User wäre schon super zufrieden, wenn er in der Lage wäre, sich einfach zeitlich noch einmal zurück zu bewegen.
Würde das gerne mal angehen, benötige dafür aber sicher Unterstützung.
|