Jest 5 typów zawartości: artykuły, pliki, media, linki, newsy. Można dodać nowe typy. Każdy z nich ma osobną tabelę, np. arts, files. Każda pozycja jest przypisana do jednej z istniejących kategorii.
Na stronie głównej jest zawartość z wybranej kategorii. Domyślnie newsy. Takie rozwiązanie sprawdza się tylko w serwisach, gdzie często pisze się newsy, prowadzi bloga, o nowych rzeczach też pisze się newsy (np. wyszła nowa wersja, dodany nowy program, są nowe tapety). Czemu nie skorzystać ze sprawdzonych metod? Wzorem jest tablica na FB. Można wyświetlać na stronie głównej wszystkie lub wybrane elementy. Pozostają kwestie implementacji:
1. Wyświetlamy najnowsze pozycje wszystkich typów i może coś jeszcze
2. Trzeba sprawdzić, czy kategoria jest dostępna, czyli JOIN z tabelą `cats`
3. Trzeba ustalić jednolity wygląd każdego typu (streszczenie) dla strony głównej
Co najmniej 5 zapytań z JOIN połączonych UNION? To zarżnie serwer. Są 2 wyjścia:
1. Cache - odświeżać po dodaniu/edycji/usunięciu dowolnej pozycji lub kategorii
2. Stworzyć indeks pozycji w 1 tabeli - więcej miejsca, ale odwołujemy się tylko do 1 tabeli
W pierwszym przypadku wystarczy dołączyć cache i jazda. Jeżeli jest dużo pozycji i chcemy je wyświetlać na kolejnych stronach (1,2,3,4 .. 150) lub po kliknięciu "Więcej" jak na FB, trzeba je skądś wczytać. Tworzyć cache dla wszystkich stron? To też nieopłacalne. Drugie rozwiązanie też wymaga kopiowania treści i danych, czyli baza będzie się rozrastać.
Macie ciekawy pomysł, co powinno być na głównej w dobrym systemie CMS i jak to zaimplementować?