haberlere eklendiği tarihin timestampini eklersiniz.
Daha sonra sql sorgusunda
$bugun = time()-60*60*24;
$buhafta = time()-60*60*24*7;
$buay = time()-60*60*24*30;
süresinden sonraki haberleri listeletirsiniz.
hite göre sıralatırsınız.
mesela
SELECT * FROM haber WHERE tarih > $buay ORDER BY hit DESC LIMIT 0,10;