[PHP][CMS] Grupowanie nowości - tagi?

Języki, których efekty są wykonywane po stronie serwera. PHP, ASP czy CGI w połączeniu z bazami danych SQL dają niezwykłe możliwości budowy i zarządzania stron WWW. Tu zadajemy pytania oraz demonstrujemy kod, z którym mamy problem.
WebCM
Nowy
Nowy
Posty: 31
Rejestracja: sob wrz 10, 2005 6:57 pm

[PHP][CMS] Grupowanie nowości - tagi?

Post autor: WebCM »

Na wielu witrynach można spotkać newsy, do których przypisana jest pewna ilość tagów tematycznych (np. webmaster, software, hardware). Zamierzam zaimplementować coś podobnego w rozwijanym CMS-ie, aby łatwiej przeglądać zawartość. Nieraz być może stosuje się je także do artykułów, plików, itd. W każdym razie rozwiązań jest więcej.

Ułatwienie polega na tym, że po wejściu na stronę można przeczytać nowości z wszystkich kategorii, a jeżeli potem bardziej interesuje cię temat X, wyświetlasz tylko dział X.

Możliwe rozwiązania:

1. Wprowadzenie tagów dla nowości.

Zawartość (w tym nowości) jest aktualnie umieszczona w kategoriach (tylko w 1). Można jeszcze wprowadzić tagi. Problem w tym, że gdyby umieścić ID wszystkich przypisanych tagów w komórce tabeli "news", do wyświetlenia nowości trzeba użyć operatora LIKE lub wyrażeń regularnych.

Gdyby zaś przypisywać ID tagu do ID newsa (ilość przypisanych tagów = ilość rekordów dla 1 nowości), prawdopodobnie też będzie problem z odczytem (choć jeszcze nie próbowałem). CMS powinien być kompatybilny z MySQL i SQLite (ale może uda się utworzyć JOIN-a, który sprawdzi, czy w tabeli "tags" news jest przypisany do wyświetlanego tematu).

2. Najnowsze newsy ze wszystkich kategorii.

Tak miałem zrobić na początku, jednak pomyślałem, że mogą być z tym problemy. Każda kategoria pozwala ustawić tekst powitalny (co może być przydatne np. na stronie głównej). Wymagany byłby również podwójny JOIN (jak w rozw. 1, akapit 2), ponieważ kategoria może być wyłączona bądź mieć ustawiony inny język (np. EN, gdy wyświetlamy newsy PL).

Przypisywanie wielu kategorii jest niemożliwe.

3. Opcja: wyświetl nowości z subkategorii (tylko 1 poziom niżej).

Z jednej strony uniknę podwójnego JOIN-a (gdyż pobiorę wcześniej subkategorie). Z innej zaś uniemożliwię przypisywanie większej ilości kategorii bądź tagów niż 1. Rozwiązanie nie wymaga implementowania dodatkowych elementów oprócz kilku wstawek i zmian. Opcja byłaby dostępna w ustawieniach kategorii.


Co o tym myślicie? Czy przypisywanie wielu tagów jest istotne? Jeśli tak, jakie rozwiązanie proponujecie? Ważna jest optymalizacja.
123456
Zaczyna działać
Zaczyna działać
Posty: 514
Rejestracja: sob paź 28, 2006 1:19 pm

Re: [PHP][CMS] Grupowanie nowości - tagi?

Post autor: 123456 »

Co o tym myślicie?
No, fajnie, fajnie...
Czy przypisywanie wielu tagów jest istotne?
Osobiście uważam, że przydatna sprawa.
Jeśli tak, jakie rozwiązanie proponujecie?
Sprawdź sobie jak to jest zrobione w WordPress'ie.
WebCM
Nowy
Nowy
Posty: 31
Rejestracja: sob wrz 10, 2005 6:57 pm

Re: [PHP][CMS] Grupowanie nowości - tagi?

Post autor: WebCM »

Należy jeszcze zwrócić uwagę, że WordPress i niektóre inne CMS-y są przeznaczone głównie do blogów i serwisów informacyjnych, więc ich budowa jest inna niż w rozwijanym przeze mnie CMS-ie.

Kategorie 5 typów (arty, newsy, linki, pliki, obrazy) znajdują się 1 tabeli, więc można je ze sobą powiązać (np. kategoria linków może być subkategorią artów). Stąd rozwiązanie nr 3 - właściwie nie będzie problemów z zastosowaniem go. Wtedy jeszcze dodałbym możliwość ustawienia obrazu dla każdej kategorii.

Nie wiem, co o tym myśleć. Jeśli jednak przypisywanie wielu tagów ma duże znaczenie, być może zaimplementuję je.
123456
Zaczyna działać
Zaczyna działać
Posty: 514
Rejestracja: sob paź 28, 2006 1:19 pm

Re: [PHP][CMS] Grupowanie nowości - tagi?

Post autor: 123456 »

Chodziło mi o sposób rozwiązania problemu a wp to tylko przykład, w ktorym problem rozwiązano w taki sam sposób jak wiele osób robi.

Mianowicie:
- robisz sobie tabele z tagami, gdzie kazdy ma swoje id. Wiadomo...
- masz tabele w której sa przechowywane news'y gdzie kazdy ma swoje id
- robisz tabelke ktora paruje id news'a z id' tagu

Ulatwia to wyszukiwanie po tagach, no i jest szybkie.
ODPOWIEDZ