Page 1 of 1
Kategorien aus Hauptseite ausschließen?
Posted: Tue Aug 21, 2007 2:54 pm
by gimmel
Kann ich irgendwo definieren, dass bestimmte Kategorien nicht in der Blog-Hauptansicht aufgelistet werden?
Ich würde auf diese Weise u.a. gerne einen Wunschzettel realisieren, den man zwar als Kategorie aufrufen kann, will aber keinen damit auf der Hauptseite belästigen.
Ich könnte zwar die entsprechenden Kategorien in der entries.tpl einfach nicht anzeigen lassen, dann hätte ich aber weniger Artikel pro Seite als in der Konfiguration angegeben.
Kann man irgendwo die entsprechende MySQL-Abfrage ändern?
Re: Kategorien aus Hauptseite ausschließen?
Posted: Tue Aug 21, 2007 3:33 pm
by garvinhicking
Hi!
Ja, Plugin serendipity_event_startcat, "Kategorie als Startseite".
Grüße,
Garvin
Posted: Tue Aug 21, 2007 4:05 pm
by gimmel
Vielen Dank für die wie immer schnelle Antwort, Garvin.
Leider funktioniert das Plugin nicht wie gewünscht. Die meisten meiner Artikel haben keine Kategorie (ich will nicht auf Biegen und Brechen für alles Kategorien anlegen). Sobald ich mit dem Plugin eine Kategorie aus der Anzeige entfernen will, werden zwar alle anderen Kategorien angezeigt, die ohne Kategorie jedoch nicht. Leider bleiben so von über 500 Beiträgen nur ca. 40 über.
Ist das ein Bug oder ein Feature…?
Michael
Posted: Tue Aug 21, 2007 4:18 pm
by garvinhicking
Hi!
Wie hast Du das plugin denn konkret konfiguriert? Welche s9y version benutzt Du?
Bisher war es noch nie gefordert, dass das plugin zum einsatz kommt wenn nicht immer alle kategorisierungen dann vorhanden sind. Es kann sein, dass die SQL-Syntax das nicht so hergibt, dass man eine kategorie ausschließen kann ohne generell mindestens eine Kategorisierung zu erfordern.
Bei einer Datenbankabfrage muss man nämlich immer angeben, ob Kategorien "frei" oder "fest" querverbunden werden. Sobald man eine feste Querverbindung einsetzt, muss ein EIntrag immer mindestens eine Kategorie aufweisen.
Evtl. müsstest Du das dann eher so lösen, dass Du über das plugin 'Erweiterte Eigenschaften von Artikeln' alle Artikeln einzelnd von der Übersichtsseite entfernst, die nicht erscheinen sollen. Dann musst Du zwar jedes Mal nen Haken setzen für diese Einträge, aber das klappt dann zumindest.
Grüße,
Garvin
Posted: Tue Aug 21, 2007 4:53 pm
by gimmel
Ich habe beim Plugin nur unter „Versteckte Kategorien“ eine ausgewählt.
s9y-Version 1.1.2
Wenn ich für alle Artikel Kategorien vergeben sollte, hätte ich einfach viel zu viele davon und oft nur einen Artikel pro Kategorie. Ich will damit nur Beiträge zusammenfassen, die auch zusammenpassen.
Geht nicht sowas wie
SELECT * FROM articles WHERE category<>YYY ?
PS: Gibt es eigentlich (bis endlich Dein Buch rauskommt, bestellt ist es schon…) eine Beschreibung der hooks, propbags, probelangs etc. und wie serendipity_event aufgebaut ist? Das alles hält mich noch vom Schreiben eigener Plugins ab.
Posted: Tue Aug 21, 2007 5:38 pm
by gimmel
Gerade glaubte ich, ich hätte die Lösung: Alle Artikel, die keine Kategorie haben, haben die categoryid 0. Also habe ich unter „Mehrere Ursprungskategorien“ die 0 und die anderen IDs der anzuzeigenden Kategorien eingetragen.
Geht aber auch nicht. Die ID 0 wird unterschlagen.
Posted: Tue Aug 21, 2007 5:49 pm
by garvinhicking
Hi!
In der technischen doku unter
www.s9y.org steht bereits einiges beschrieben, hast Du da mal geschaut?
Mir fehlt jetzt die Zeit die SQL Sache genau nachzuschauen. Wenn Du daran interesse hast, öffne mal die include/functions_entries.inc.php.
Dort die Funktion "serendipity_getMultiCategoriesSQL" ist, was den Code erzeugt.
In der selben Datei kannst Du auch im Code
Mal die Kommentarzeile entfernen, dann kannst Du das SQL Konstrukt sehen, welches deine artikelübersicht erzeugt und damit evtl. herausfinden, was man ändern müsste?
Grüße,
Garvin
Posted: Tue Aug 21, 2007 10:31 pm
by gimmel
Mir ist in serendipity_getMultiCategoriesSQL folgender Block aufgefallen:
Code: Select all
if ($categoryid != 0) {
$cat_sql_array[] = " (c.category_left " . ($invert ? " NOT " : "") . " BETWEEN " . implode(' AND ', serendipity_fetchCategoryRange($categoryid)) . ')';
}
Ich verstehe nicht ganz, warum nach den Kategorien mit BETWEEN in
serendipity_category gesucht wird. Da es dort keine Kategorie 0 (ohne Kategorie) gibt, fällt natürlich alles heraus, was keine Kategorie hat.
Wäre es nicht sinnvoller, direkt in
serendipity_entrycat zu suchen?
Code: Select all
$cat_sql_array[] = " (ec.categoryid" . ($invert ? " != " : " = ") . $categoryid . ')';
Dann funktioniert eigentlich alles so, wie man es vom Plugin erwartet würde. Es lassen sich alle Kategorie-IDs verwenden, inkl. Kategorie 0.
Posted: Wed Aug 22, 2007 12:04 pm
by garvinhicking
Hi!
Das 'BETWEEN' ist wichtig, damit SErendipity auch Einträge finden kann, die in Unterkategorien von enthalten Kategorien sind. Da wir eine NEsted-Set Struktur verwenden, kann man mit 'BETWEEN' leicht sagen "in Oberkategorie oder allen darunter".
Mir fehlt diese Woche die Zeit das genauer anzugucken. Vielleicht kann man einen Sonderfall einbauen, der auch 0er Category-IDs für deinen fall zulässt, hast Du da zufällig eine Idee? Scheinst Dich ja jetzt schon etwas eingearbeitet zu haben
Grüße,
Garvin