Page 1 of 1

Posting-Reihenfolge ändern

Posted: Fri Jan 06, 2006 3:33 pm
by Tine
Hallo,
Ich würde gerne wissen, ob es irgend möglich ist, die Posting-Rehienfolge in einigen Kategorien so zu verändern, dass der älteste Eintrag immer oben steht, und die neueren dann darunter. Ich brauche das für eine ziemlich lange Geschichte, die ich leider nicht in ein einziges Posting reingequetscht bekomme. Daher sollte der erste Eintrag (also das erste Kapitel) logischerweise oben stehen, wie bei 'nem Buch.

Die *normalen* Weblog-Kategorien sollen natürlich weiterhin in der alten Art und Weise die Posts anzeigen.

Kann mir jemand erklären, wie das geht? Oder ob es überhaupt geht? Und falls nicht, wie schaffe ich es, ein Posting "beliebig" lang werden zu lassen, oder geht das wegen der Table Tags nicht?! Hab mal gehört, dass man einen Table nicht beliebig erweitern kann, ist das richtig? Oder bin ich da auf dem Holzweg?

Vielen Dank.
Tine

Re: Posting-Reihenfolge ändern

Posted: Fri Jan 06, 2006 3:41 pm
by garvinhicking
Ja, das geht indem Du mit PHP-Code deine include/genpage.inc.php editierst. Den Code dort kannst Du theoretisch mit etwas PHP-Wissen auch in die config.inc.php Deines Templates auslagern.

Grob ginge das so, Du suchst den Tei:

Code: Select all

        case 'read':
            if (isset($serendipity['GET']['id'])) {
                $entry = array(serendipity_fetchEntry('id', $serendipity['GET']['id']));
                if (!is_array($entry) || count($entry) < 1) {
                    unset($serendipity['GET']['id']);
                    $entry = array(array());
                }

                serendipity_printEntries($entry, 1);
            } else {
                serendipity_printEntries(serendipity_fetchEntries($serendipity['range'], true, $serendipity['fetchLimit']));
            }
            break;
und änderst das in:

Code: Select all

        case 'read':
            if (isset($serendipity['GET']['id'])) {
                $entry = array(serendipity_fetchEntry('id', $serendipity['GET']['id']));
                if (!is_array($entry) || count($entry) < 1) {
                    unset($serendipity['GET']['id']);
                    $entry = array(array());
                }

                serendipity_printEntries($entry, 1);
            } else {
                $order = 'timestamp DESC';
                if ($serendipity['GET']['category'] == 3) {
                    $order = 'timestamp ACS';
                }
                serendipity_printEntries(serendipity_fetchEntries($serendipity['range'], true, $serendipity['fetchLimit'], null, null, $order));
            }
            break;
Dort habe ich eine IF-Abfrageeingefügt,die die Sortierreihenfolge umgekrht bei Kategorie #3. Das kannst Du für beliebige andereKategorien dann auch einfügen.

Das wäre die einfachsteMethode.

Du kannst Postings so lang werden lassen, wie Du magst.

Viele Grüße,
Garvin

Posted: Fri Jan 06, 2006 3:58 pm
by Tine
Okay, ich hab das so gemacht, aber leider kommt folgende Fehlermeldung:

Code: Select all

Query failed:

SELECT 
                    

                    e.id,
                    e.title,
                    e.timestamp,
                    e.comments,
                    e.exflag,
                    e.authorid,
                    e.trackbacks,
                    e.isdraft,
                    e.allow_comments,
                    e.last_modified,

                    a.realname AS author,
                    a.email

                    , e.body, e.extended
                    
                FROM
                    serendipity_entries AS e
                    LEFT JOIN serendipity_authors a
                        ON e.authorid = a.authorid
                    LEFT JOIN serendipity_entrycat ec
                        ON e.id = ec.entryid
                    LEFT JOIN serendipity_category c
                        ON ec.categoryid = c.categoryid
                     LEFT JOIN serendipity_authorgroups AS acl_a
                                   ON acl_a.authorid = 1
                            LEFT JOIN serendipity_access AS acl_acc
                                   ON (    acl_acc.artifact_mode = 'read' 
                                       AND acl_acc.artifact_type = 'category'
                                       AND acl_acc.artifact_id   = c.categoryid 
                                      )
                    WHERE ( c.category_left BETWEEN 2 AND 3) AND e.timestamp <= '1136558807' AND     (
                                 c.categoryid IS NULL 
                                 OR ( acl_acc.groupid = acl_a.groupid OR acl_acc.groupid = 0)
                                 OR ( acl_acc.artifact_id IS NULL 
                                      
                                    )
                               )
                    GROUP BY e.id
                    ORDER BY timestamp ACS
                     LIMIT 15

/ You have an error in your SQL syntax near 'ACS LIMIT 15' at line 43
Hab bloß Copy & Paste gemacht, da kann man nicht allzuviel falsch machen...*?* Kannst Du mir nochmal helfen, bitte?

Tine

Posted: Fri Jan 06, 2006 4:21 pm
by Tine
...oder verrat mir, wie ich die Postinglänge verändere.

Danke für Deine Hilfe.
Tine

Posted: Fri Jan 06, 2006 5:33 pm
by Tine
Ich hab mal gegooglet:

Statt ACS hab ich mal ASC da reingeschrieben, und nun kommt auch keine Fehlermeldung mehr. :D

Posted: Fri Jan 06, 2006 6:33 pm
by garvinhicking
Ja, sorry, das war leider ein TIppfehler bei mir :)

Grüße,
Garvin

Posted: Sat Jan 07, 2006 11:41 am
by Tine
Kein Problem, kann ja mal passieren.

Vielen Dank für's helfen. :)

Posted: Sat Jan 07, 2006 11:58 am
by Tine
Achso, nochwas: Wenn ich da mehrere Kategorien so sortieren will, welchen Operator muss ich nehmen? OR?

Sorry, ich weiss, ich nerve etwas... :roll:

Posted: Sat Jan 07, 2006 12:53 pm
by garvinhicking
Genau, entweder den "OR" Operator, oderhalt den IF-Block für jedeKategorie kopieren..

Viele Grüße,
Garvin