Kategorien aus Hauptseite ausschließen?

Hier können Probleme und alles andere in Deutscher Sprache gelöst werden.
Post Reply
gimmel
Regular
Posts: 118
Joined: Tue Jul 25, 2006 2:44 pm
Location: Quickborn/Germany
Contact:

Kategorien aus Hauptseite ausschließen?

Post 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?
garvinhicking
Core Developer
Posts: 30022
Joined: Tue Sep 16, 2003 9:45 pm
Location: Cologne, Germany
Contact:

Re: Kategorien aus Hauptseite ausschließen?

Post by garvinhicking »

Hi!

Ja, Plugin serendipity_event_startcat, "Kategorie als Startseite".

Grüße,
Garvin
# Garvin Hicking (s9y Developer)
# Did I help you? Consider making me happy: http://wishes.garv.in/
# or use my PayPal account "paypal {at} supergarv (dot) de"
# My "other" hobby: http://flickr.garv.in/
gimmel
Regular
Posts: 118
Joined: Tue Jul 25, 2006 2:44 pm
Location: Quickborn/Germany
Contact:

Post 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
garvinhicking
Core Developer
Posts: 30022
Joined: Tue Sep 16, 2003 9:45 pm
Location: Cologne, Germany
Contact:

Post 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
# Garvin Hicking (s9y Developer)
# Did I help you? Consider making me happy: http://wishes.garv.in/
# or use my PayPal account "paypal {at} supergarv (dot) de"
# My "other" hobby: http://flickr.garv.in/
gimmel
Regular
Posts: 118
Joined: Tue Jul 25, 2006 2:44 pm
Location: Quickborn/Germany
Contact:

Post 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.
gimmel
Regular
Posts: 118
Joined: Tue Jul 25, 2006 2:44 pm
Location: Quickborn/Germany
Contact:

Post 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.
garvinhicking
Core Developer
Posts: 30022
Joined: Tue Sep 16, 2003 9:45 pm
Location: Cologne, Germany
Contact:

Post 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

Code: Select all

// DEBUG:
// die($query);
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
# Garvin Hicking (s9y Developer)
# Did I help you? Consider making me happy: http://wishes.garv.in/
# or use my PayPal account "paypal {at} supergarv (dot) de"
# My "other" hobby: http://flickr.garv.in/
gimmel
Regular
Posts: 118
Joined: Tue Jul 25, 2006 2:44 pm
Location: Quickborn/Germany
Contact:

Post 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.
garvinhicking
Core Developer
Posts: 30022
Joined: Tue Sep 16, 2003 9:45 pm
Location: Cologne, Germany
Contact:

Post 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
# Garvin Hicking (s9y Developer)
# Did I help you? Consider making me happy: http://wishes.garv.in/
# or use my PayPal account "paypal {at} supergarv (dot) de"
# My "other" hobby: http://flickr.garv.in/
Post Reply