MyBB.de Forum

Normale Version: How To: Heutige Themen und Neue Themen in der Suche
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.

Dave

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.

Dave

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
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. Wink

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. Wink