Hallo, Gast! (Registrieren)

Letzte Ankündigung: MyBB 1.8.38 veröffentlicht (30.04.24)


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste
Beiträge in absteigender Reihenfolge?
#1
Hallo Leute,

ich habe schon bei manchen foren gesehen das der benutzer selbst entscheiden kann wie die beiträge in einem thema angezeigt werden..

Beispiel:

Post vom 26.10.2009 als erstes
Post vom 25.10.2009 als zweites
usw.. somit wäre der eröffnungspost auf der letzten seite der letzte post..

hab dazu aber leider nichts gefunden.. weder bei google.. hier bei der suche.. noch im admin-cp oder im benutzer-cp.. gibt es dafür ein plugin oder soetwas? (Möglich das ich einfach die falschen Suchbegriffe verwende.. [Beiträge in absteigender Reihenfolge usw])

oder funktioniert das bei myBB nicht?

Vielen Dank für die antworten
#2
Das kann man nicht so leicht umsetzen.
[Bild: banner.png]

Bitte die Foren-Regeln beachten und im Profil die verwendete MyBB-Version angeben.
#3
bedeutet jetzt genau?
#4
Hallo,

das fragen meine Mitglieder auch öfters. Gibts da vielleicht doch eine Möglichkeit?

hafgan
#5
Für die gewünschte Sortier-Auswahl im Benutzer-CP sind folgende Änderungen notwendig
(basierend auf > https://www.mybb.de/forum/showthread.php?tid=762 und > https://www.mybb.de/forum/thread-799-pos...l#pid45157):


1. in Datei "showthread.php"

ersetze (~ Zeile 651)
PHP-Code:
        // Build the threaded post display tree.
        
$query $db->query("
            SELECT p.username, p.uid, p.pid, p.replyto, p.subject, p.dateline
            FROM "
.TABLE_PREFIX."posts p
            WHERE p.tid='
$tid'
            
$visible
            ORDER BY p.dateline
        "
); 
durch
PHP-Code:
        if($mybb->user["postsort"] == 2) {
            
$order "DESC";
        } 
        else {
            
$order "ASC";
        }
        
// Build the threaded post display tree.
        
$query $db->query("
            SELECT p.username, p.uid, p.pid, p.replyto, p.subject, p.dateline
            FROM "
.TABLE_PREFIX."posts p
            WHERE p.tid='
$tid'
            
$visible
            ORDER BY p.dateline "
.$order."
        "
); 

ersetze (~ Zeile 778)
PHP-Code:
        $query $db->simple_select("posts p""p.pid""p.tid='$tid$visible", array('order_by' => 'p.dateline''limit_start' => $start'limit' => $perpage)); 
durch
PHP-Code:
        if($mybb->user["postsort"] == 2) {
            
$order "DESC";
        } 
        else {
            
$order "ASC";
        }
        
$query $db->simple_select("posts p""p.pid""p.tid='$tid$visible", array('order_by' => 'p.dateline '.$order'limit_start' => $start'limit' => $perpage)); 

ersetze (~ Zeile 805)
PHP-Code:
        // Get the actual posts from the database here.
        
$pfirst true;
        
$posts '';
        
$query $db->query("
            SELECT u.*, u.username AS userusername, p.*, f.*, eu.username AS editusername
            FROM "
.TABLE_PREFIX."posts p
            LEFT JOIN "
.TABLE_PREFIX."users u ON (u.uid=p.uid)
            LEFT JOIN "
.TABLE_PREFIX."userfields f ON (f.ufid=u.uid)
            LEFT JOIN "
.TABLE_PREFIX."users eu ON (eu.uid=p.edituid)
            WHERE 
$pids
            ORDER BY p.dateline
        "
); 
durch
PHP-Code:
        if($mybb->user["postsort"] == 2) {
            
$order "DESC";
        } 
        else {
            
$order "ASC";
        }
        
// Get the actual posts from the database here.
        
$pfirst true;
        
$posts '';
        
$query $db->query("
            SELECT u.*, u.username AS userusername, p.*, f.*, eu.username AS editusername
            FROM "
.TABLE_PREFIX."posts p
            LEFT JOIN "
.TABLE_PREFIX."users u ON (u.uid=p.uid)
            LEFT JOIN "
.TABLE_PREFIX."userfields f ON (f.ufid=u.uid)
            LEFT JOIN "
.TABLE_PREFIX."users eu ON (eu.uid=p.edituid)
            WHERE 
$pids
            ORDER BY p.dateline "
.$order."
        "
); 


2. in Datei "usercp.php"

ersetze (~ Zeile 629)
PHP-Code:
        "pmnotify" => $mybb->input['pmnotify'], 
durch
PHP-Code:
        "pmnotify" => $mybb->input['pmnotify'],
        
"postsort" => $mybb->input['postsort'], 

ersetze (~ Zeile 807)
PHP-Code:
    else
    {
        
$dst_disabled_selected "selected=\"selected\"";
    } 
durch
PHP-Code:
    else
    {
        
$dst_disabled_selected "selected=\"selected\"";
    }
    
    if(
$mybb->input['postsort'] != 2)
    {
        
$mybb->input['postsort'] = 1;
    } 

ersetze (~ Zeile 883)
PHP-Code:
    $threadview[$user['threadmode']] = 'selected="selected"'
durch
PHP-Code:
    $threadview[$user['threadmode']] = 'selected="selected"';
    
$postsort[$mybb->user['postsort']] = 'selected="selected"'


3. in Datei "usercp.lang.php"

ersetze (am Ende der Datei)
PHP-Code:
?>
durch
PHP-Code:
$l['postsort'] = "Reihenfolge der Beiträge:";
$l['postsort_desc'] = "absteigend (neuester Beitrag zuerst)";
$l['postsort_asc'] = "aufsteigend (ältester Beitrag zuerst)";
?>


4. in Template "Benutzer Control-Panel Templates > usercp_options"

ersetze
Code:
<tr>
<td colspan="2"><select name="threadmode"><option value="">$lang->use_default</option><option value="linear" $threadview[linear]>$lang->linear</option><option value="threaded" $threadview[threaded]>$lang->threaded</option></select></td>
</tr>
durch
Code:
<tr>
<td colspan="2"><select name="threadmode"><option value="">$lang->use_default</option><option value="linear" $threadview[linear]>$lang->linear</option><option value="threaded" $threadview[threaded]>$lang->threaded</option></select></td>
</tr>
<!-- mod start -->
<tr>
<td colspan="2"><span class="smalltext">$lang->postsort</span></td>
</tr>
<tr>
<td colspan="2"><select name="postsort"><option value="1"$postsort[1]>$lang->postsort_asc</option><option value="2"$postsort[2]>$lang->postsort_desc</option></select></td>
</tr>
<!-- mod end -->


5. in "phpMyAdmin" (o. ä.) führe folgende Query aus ("mybb_" ggf. anpassen!)
PHP-Code:
ALTER TABLE `mybb_usersADD `postsortINTNOT NULL DEFAULT '1'


In "Benutzer-CP > Optionen ändern" sollte nun die Option "Reihenfolge der Beiträge" verfügbar und einstellbar sein.
#6
GENIAL!!!!

Vielen, vielen Dank! Das hat super funktioniert Smile

VG
hafgan
#7
Hi,
Vielen Dank für den tollen Beitrag!
Ich habe die Änderungen wie oben beschrieben durchgeführt und es funktioniert auch soweit.
Nur wenn ich einen Beitrag direkt auf der Startseite (auf der rechten Seite der Tabelle) bekomme ich eine weiße Seite wo nur die Zeichen  zu sehen sind.

Der link, der mir angezeigt wird ist http://www.xzy/showthread.php?tid=4&action=lastpost

Ich habe herausgefunden, wenn ich den Zusatz action=lastpost per hand in der adresszeile entferne geht alles.
Habe ich bei der Modifikation was falsch gemacht, oder fehlt moch eine kleine Einstellung?

Vielen Dank für Antworten
Arktus

-----
MyBB Version 1.4.11
#8
https://www.mybb.de/doku/haeufig-gestell...datei.html
[Bild: banner.png]

Bitte die Foren-Regeln beachten und im Profil die verwendete MyBB-Version angeben.
#9
Für MyBB 1.6 gelten folgende Änderungen (basierend auf > Beitrag #5):

1. in Datei "showthread.php"

ersetze (~ Zeile 743)
PHP-Code:
        // Build the threaded post display tree.
        
$query $db->query("
            SELECT p.username, p.uid, p.pid, p.replyto, p.subject, p.dateline
            FROM "
.TABLE_PREFIX."posts p
            WHERE p.tid='
$tid'
            
$visible
            ORDER BY p.dateline
        "
); 
durch
PHP-Code:
        if($mybb->user["postsort"] == 2)
        {
            
$order "DESC";
        } 
        else
        {
            
$order "ASC";
        }
        
// Build the threaded post display tree.
        
$query $db->query("
            SELECT p.username, p.uid, p.pid, p.replyto, p.subject, p.dateline
            FROM "
.TABLE_PREFIX."posts p
            WHERE p.tid='
$tid'
            
$visible
            ORDER BY p.dateline 
$order
        "
); 

ersetze (~ Zeile 884 - ergibt sich aus der 1. Änderung)
PHP-Code:
        $query $db->simple_select("posts p""p.pid""p.tid='$tid$visible", array('order_by' => 'p.dateline''limit_start' => $start'limit' => $perpage)); 
durch
PHP-Code:
        if($mybb->user["postsort"] == 2)
        {
            
$order "DESC";
        } 
        else 
        {
            
$order "ASC";
        }
        
$query $db->simple_select("posts p""p.pid""p.tid='$tid$visible", array('order_by' => 'p.dateline '.$order'limit_start' => $start'limit' => $perpage)); 

ersetze (~ Zeile 927 - ergibt sich aus der 2. Änderung)
PHP-Code:
        $query $db->query("
            SELECT u.*, u.username AS userusername, p.*, f.*, eu.username AS editusername
            FROM "
.TABLE_PREFIX."posts p
            LEFT JOIN "
.TABLE_PREFIX."users u ON (u.uid=p.uid)
            LEFT JOIN "
.TABLE_PREFIX."userfields f ON (f.ufid=u.uid)
            LEFT JOIN "
.TABLE_PREFIX."users eu ON (eu.uid=p.edituid)
            WHERE 
$pids
            ORDER BY p.dateline
        "
); 
durch
PHP-Code:
        if($mybb->user["postsort"] == 2)
        {
            
$order "DESC";
        } 
        else
        {
            
$order "ASC";
        }
        
$query $db->query("
            SELECT u.*, u.username AS userusername, p.*, f.*, eu.username AS editusername
            FROM "
.TABLE_PREFIX."posts p
            LEFT JOIN "
.TABLE_PREFIX."users u ON (u.uid=p.uid)
            LEFT JOIN "
.TABLE_PREFIX."userfields f ON (f.ufid=u.uid)
            LEFT JOIN "
.TABLE_PREFIX."users eu ON (eu.uid=p.edituid)
            WHERE 
$pids
            ORDER BY p.dateline 
$order
        "
); 


2. in Datei "usercp.php"

ersetze (~ Zeile 639)
PHP-Code:
        "pmnotify" => $mybb->input['pmnotify'], 
durch
PHP-Code:
        "pmnotify" => $mybb->input['pmnotify'],
        
"postsort" => $mybb->input['postsort'], 

ersetze (~ Zeile 802 - ergibt sich aus der 1. Änderung)
PHP-Code:
    else
    {
        
$dst_disabled_selected "selected=\"selected\"";
    } 
durch
PHP-Code:
    else
    {
        
$dst_disabled_selected "selected=\"selected\"";
    }
    
    if(
$mybb->input['postsort'] != 2)
    {
        
$mybb->input['postsort'] = 1;
    } 

ersetze (~ Zeile 887 - ergibt sich aus der 2. Änderung)
PHP-Code:
    $threadview[$user['threadmode']] = 'selected="selected"'
durch
PHP-Code:
    $threadview[$user['threadmode']] = 'selected="selected"';
    
$postsort[$mybb->user['postsort']] = 'selected="selected"'


3. in Datei "usercp.lang.php"

ersetze (am Ende der Datei)
PHP-Code:
?>
durch
PHP-Code:
$l['postsort'] = "Reihenfolge der Beiträge:";
$l['postsort_desc'] = "absteigend (neuester Beitrag zuerst)";
$l['postsort_asc'] = "aufsteigend (ältester Beitrag zuerst)";
?>


4. in Template "Benutzer Control-Panel Templates > usercp_options"

ersetze
Code:
<tr>
<td colspan="2"><select name="threadmode"><option value="">{$lang->use_default}</option><option value="linear" {$threadview['linear']}>{$lang->linear}</option><option value="threaded" {$threadview['threaded']}>{$lang->threaded}</option></select></td>
</tr>
durch
Code:
<tr>
<td colspan="2"><select name="threadmode"><option value="">{$lang->use_default}</option><option value="linear" {$threadview['linear']}>{$lang->linear}</option><option value="threaded" {$threadview['threaded']}>{$lang->threaded}</option></select></td>
</tr>
<!-- mod start -->
<tr>
<td colspan="2"><span class="smalltext">$lang->postsort</span></td>
</tr>
<tr>
<td colspan="2"><select name="postsort"><option value="1" {$postsort[1]}>{$lang->postsort_asc}</option><option value="2" {$postsort[2]}>{$lang->postsort_desc}</option></select></td>
</tr>
<!-- mod end -->


5. in "phpMyAdmin" (o. ä.) führe folgende Query aus ("mybb_" ggf. anpassen!)
PHP-Code:
ALTER TABLE `mybb_usersADD `postsortINTNOT NULL DEFAULT '1'
#10
Hallo linwinman,

danke für Deine Mühe. Leider habe ich nun folgenden Fehler, wenn ich Beiträge anzeigen lassen will:

Code:
MyBB has experienced an internal SQL error and cannot continue.

SQL Error:
    1054 - Unknown column 'p.datelineASC' in 'order clause'
Query:
    SELECT p.pid FROM mybb_posts p WHERE p.tid='146' AND (p.visible='0' OR p.visible='1') ORDER BY p.datelineASC LIMIT 0, 10

Hast Du eine Idee? (Leider hab ich keine Ahnung von PHP).

EDIT: Es müsste an der 1. Datei liegen (showthread.php)

Alexander