Optymalne rozwiązanie? Filtrowanie newsów według kategorii: 2012 -> Grudzień, Styczeń, Luty, itd, 2013 -> Grudzień, Styczeń, Luty, itd oparłbym na podstawie modułu kategorii, który i tak pewnie masz w systemie newsów. Tylko zmodyfikowałbym strukturę - dodałbym trzy nowe pola:
Kod
news_count typu smallint - powinno starczyć ewentualnie typu mediumint
is_special = typu enum (yes|no) bądź tinyint
parent_tree = typu varchar = drzewko w postaci "IP" - było na forum
news_count - wiadomo jak dodajesz nowego njusa dla tego kategorii to dodajesz +1, w przypadku usunięcia -1 - proste.
is_special - w przypadku kategorii typu 2012, styczeń, luty, itd -> zaznaczyłbym "yes" -a w przypadku innych "no" - dlaczego? Ponieważ jak nadasz komuś uprawnienia do pisania njusów to niech zaznacza/odznacza tej kategorii tylko niech to robi z automatu. Plus dodatkowo jak pod newsem będziesz wyświetlał spis kategorii to łatwo sobie ustawisz zapytanie, aby nie pobierało kategorii typu styczeń, grudzień, itd...
parent_tree - chodzi oto, aby móc tworzyć zagłębienia dla kategorii - tak jak to pokazałeś na pierwszym screenie (tj: 2013 -> Grudzień, 2013 -> Styczeń, itd)
Jeśli budowałbyś już taki kod to NIE WYŚWIETLAJ wszystkich newsów dla 12 miesięcy bo po co? proponuje żeby wyświetlało dopiero po kliknięciu w nazwę miesiąca - chyba, że ktoś nie zaznaczył nazwy to niech DOMYŚLNIE wczytuje pierwszy miesiąc.