Beiträge: 3
Themen: 2
Registriert seit: 08.10.2009
27.10.2009, 11:07
(Dieser Beitrag wurde zuletzt bearbeitet: 28.10.2009, 01:34 von linwinman.)
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
Beiträge: 25.762
Themen: 269
Registriert seit: 20.09.2005
Das kann man nicht so leicht umsetzen.
Bitte die Foren-Regeln beachten und im Profil die verwendete MyBB-Version angeben.
Beiträge: 3
Themen: 2
Registriert seit: 08.10.2009
Beiträge: 72
Themen: 16
Registriert seit: 08.10.2009
Hallo,
das fragen meine Mitglieder auch öfters. Gibts da vielleicht doch eine Möglichkeit?
hafgan
Beiträge: 1.939
Themen: 18
Registriert seit: 30.06.2007
MyBB-Version: 1.6.6
28.10.2009, 01:24
(Dieser Beitrag wurde zuletzt bearbeitet: 28.10.2009, 01:36 von linwinman.)
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)
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_users` ADD `postsort` INT( 1 ) NOT NULL DEFAULT '1';
In "Benutzer-CP > Optionen ändern" sollte nun die Option "Reihenfolge der Beiträge" verfügbar und einstellbar sein.
Beiträge: 72
Themen: 16
Registriert seit: 08.10.2009
GENIAL!!!!
Vielen, vielen Dank! Das hat super funktioniert
VG
hafgan
Beiträge: 1
Themen: 0
Registriert seit: 08.04.2010
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
Beiträge: 25.762
Themen: 269
Registriert seit: 20.09.2005
Bitte die Foren-Regeln beachten und im Profil die verwendete MyBB-Version angeben.
Beiträge: 1.939
Themen: 18
Registriert seit: 30.06.2007
MyBB-Version: 1.6.6
23.10.2010, 23:08
(Dieser Beitrag wurde zuletzt bearbeitet: 24.10.2010, 00:09 von linwinman.)
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)
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_users` ADD `postsort` INT( 1 ) NOT NULL DEFAULT '1';
Beiträge: 72
Themen: 16
Registriert seit: 08.10.2009
23.10.2010, 23:58
(Dieser Beitrag wurde zuletzt bearbeitet: 24.10.2010, 00:09 von hafgan.)
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
|