Hmm, okay - habe jetzt nicht wirklich getestet, wo genau diese Funktion alles vorkommt, sondern mich einfach nur auf mein aktuelles Problem beschränkt und in verschiedenen Konstellationen getestet.
Wenn das anderweitige Auswirkungen hat, dann macht das so leider doch wenig Sinn.
Dann wäre der Ansatz in der default.php an sich doch nicht ganz so verkehrt gewesen, um es entsprechend zu beschränken.
...
Zu
AND c.parent_id NOT IN()
Ich hatte es nicht getestet aber verstehen tue ich nicht was du sagst.
Nehmen wir an du hast die Kategorie mit ID 5 und diese hat die Unterkategorien mit den IDs 6,7,8.
Davon willst du jedoch die Artikel aus der 8 nicht anzeigen lassen.
Die in die Funktion übergebene parent_id ist die 5 der Hauptkategorie, denn deren Unterkategorien willst du ja holen, willst dabei jedoch die 8 ausschließen. Die 8 ist aber nicht parent_id sondern eine der eruierten categories_id.
D.h. du willst die auszuschließenden Kategorien ja aus diesem ausschließen
SELECT c.categories_id
außer eben die 8, also
SELECT c.categories_id
...
WHERE c.categories_id NOT IN(8);
Da hast du mich missverstanden oder aber ich habe mich nicht gründlich genug ausgedrückt.
Da die Funktion ja "Artikel aus Unterkategorien anzeigen" heißt, macht diese Funktion genau das:
sie zeigt in Elternkategorien die Artikel der Unterkategorien an.
Und nun möchte ich in einigen wenigen Elternkategorien genau das verhindern: ich möchte nicht verhindern, dass aus einer bestimmten Unterkategorie die Artikel angezeigt werden, sondern ich möchte das für eine bestimmte Überkategorie generell verhindern.
Ich beziehe mich mal auf die von dir genannten IDs mit einem weiteren Beispiel:
Überkategorie
"Geschenke für Männer" (ID 5)
Unterkategorien:
Geschenke für Jungs (ID 6)
Geschenke für Papa (ID 7)
Geschenke für Opa (ID
Nun werden unter "Geschenke für Männer" alle Artikel aus Jungs, Papa & Opa gezeigt. Jetzt hat man dort ganz spezielle Produkte die genau auf die Klientel passen, sprich Artikel auf denen "bester Bruder", "bester Opa", "bester Papa" steht oder lustige Geschenke für 10 Jährige...
Nun kommt ein Kunde über eine Suchmaschine und landet auf der Landingpage "Geschenke für Männer", eben weil er danach gesucht hat. Tendenziell ist das aber meist keiner der was für seinen Papa oder Opa sucht, noch seinen Kindern was schenken will. Eher jemand der als Ehepartner/in ihrem/seinem Mann was schenken will oder aber jemand der seinem Kumpel irgendwas schenken will.
Daher sollten auf dieser Seite eben besser passende, neutralere Artikel angezeigt werden, als in den entsprechenden Unterkategorien. Daher sollen hier separat bestimmte Artikel reinverlinkt werden.
Aber durch das Aktivieren der Funktion im Backend, landen dennoch alle Unterkategorie-Artikel in der Überkategorie und verwässern und verschlechtern das Ergebnis für den Kunden.
Und genau deshalb möchte ich eine Überkategorie definieren können, die wenn aufgerufen wird, sich so verhält, als ob sie keine Unterkategorien hätte.
Und dafür muss es dann eben eher so aussehen:
SELECT c.categories_id
...
WHERE c.parent_id NOT IN(5);
Denn die Kategorien 6,7,8 haben jeweils die parent_id 5 gesetzt.
Nachdem ich also deine Ausführungen gelesen habe, verstehe ich auch, warum es nicht funktioniert hatte, denn du wolltest bestimmte Unterkategorien ausschließen, ich habe aber eben die Überkategorie eingetragen
Grüße
Dominik
Tendenziell sind