Sposób 1. Opcja "Przypnij"
Dodajemy dodatkowe pole `pin` do tabeli `news`. Redaktor zaznacza opcję Przypnij newsa i już jest na samej górze. Wada tego rozwiązania: większa złożoność obliczeniowa mimo niekorzystania z tej funkcji:
SELECT * FROM news ORDER BY pin DESC, ID DESC
Indeks jest tylko na polu ID. Jak widać, trzeba dodatkowo sortować po polu `pin` bez indeksu. To musi trwać dłużej. Pole `pin` przyjmuje wartości 0 lub 1, chyba że dopuścimy większe.
Sposób 2. Data modyfikacji, data zdjęcia
Dodatkowe pole `expiry_time` pozwala wyświetlać news na szczycie do pewnego momentu. Podobnie jak wyżej, rozszerzamy komendę ORDER BY. Wady podobne, a zaleta - news zdejmie się automatycznie.
Sposób 3. Inny sposób?
Jak to zrobić, aby jak najmniej obciążać bazę danych i nie spowalniać generowania strony? Dodatkowo trzeba te newsy wyróżnić - prawdopodobnie po stronie PHP, a w szablonach może być tak:
A może wprowadzić taką funkcję tylko dla stron głównych, które byłyby cachowane?
Kod
<!-- START wyroznione -->
Tu wyróżnione newsy
<!-- STOP -->
<!-- START newsy -->
Tu zwykłe newsy
<!-- STOP -->
Tu wyróżnione newsy
<!-- STOP -->
<!-- START newsy -->
Tu zwykłe newsy
<!-- STOP -->
To można zastosować też do artykułów, plików i wszystkich typów zawartości.