Hm, po zastanowieniu – może można by tak zrobić, jak proponujesz. Oto, co udało mi się stworzyć na podstawie niektórych postów w tym wątku:
Opis rozwiązania
Dla odpowiednich kategorii będzie wymuszać się podanie tagów o rodzajach odpowiednich dla tej kategorii.
Na przykład:
- Dla kategorii
Bazy danych
będzie wymuszać się podanie tagu opisującego używany silnik bazy danych. Czyli – rodzaj tego tagu to nazwa silnika bazy danych.
- Dla kategorii
C/C++
będzie wymuszać się podanie tagu opisującego, czy to język C, czy C++, (jakiś inny?), czy też bez różnicy. Czyli – rodzaj tego tagu to nazwa języka programowania z rodziny C/C++.
Ważne jest, by w każdej kategorii był również do wyboru tag brak-lub-nieznane
(obecnie w tagach nie może być ukośników, dlatego zastosowałem tutaj ciąg znaków -lub-
).
To rozwiązanie musi być oparte na białej liście tagów – inaczej nie będzie wiadomo, czy podany tag jest tagiem odpowiednim dla danej kategorii, czy nie.
Czarnej listy osobiście nie popieram ani nie odrzucam – jeśli uznamy, że warto, to niech i będzie.
Korzyści
To rozwiązanie wykorzystuje 3 elementy, które mogą przynieść osobne korzyści:
- wymuszenie podania co najmniej jednego tagu;
- wymuszenie podania co najmniej jednego tagu odpowiedniego dla danej kategorii;
- informacja o oczekiwaniach względem użytkownika.
Każdy z tych trzech elementów przyniesie następujące korzyści (zgodnie z tym, co było w tym wątku zaznaczane i co Ty, @Adam Boduch, i inni wyrażali wiele razy):
- Wymuszenie podania co najmniej jednego tagu (rzecz oczywista, już zresztą jest zaimplementowane u nas) pozwoli na otrzymywanie powiadomień o treściach oznaczanych tym tagiem.
- Wymuszenie podania co najmniej jednego tagu odpowiedniego dla danej kategorii (rzecz oczywista) przyczyni się się do zmniejszenia liczby "losowych" lub bardzo ogólnych tagów (np. "pomoc"), co przyczyni się do lepszej kategoryzacji treść na forum, co w dalszej kolejności przyczyni się do lepszego wyszukiwania treści oraz trafniejszych powiadomień.
- Informacja o oczekiwaniach względem użytkownika:
- pomoże użytkownikowi lepiej opisać swój post, szczególnie w następujących sytuacjach: (a) gdy w ogóle nie pomyśli/nie będzie się przejmował, że można/należy/dobrze by było dodać jakieś tagi; (b) gdy nie będzie wiedział/pewien, jaki rodzaj tagów powinien być w danym wątku (np. że wątki z baz danych wymagają podania nazwy silnika bazy danych); (c) gdy żaden tag nie będzie odpowiedni (poda wtedy tag
brak-lub-nieznane
);
- pozwoli w sytuacji dobrej woli użytkownika nie dopuścić do stanu opisywania wątku przez tagi niezwiązane z pytaniem (użytkownik nie zamieści np. tagu
SQL
, gdy w pytaniu chodzi o NoSQL
).
Poza wymienionymi wyżej korzyściami zaletą jest też relatywnie prosta (?) implementacja.
Szczegóły implementacyjne
Tak jak ja to widzę, to:
- W formularzu dodawania posta w danej kategorii należy dodać jedną etykietę z tekstem odpowiednim dla tej kategorii – na przykład, jak wyżej napisałem,
Wymagany co najmniej 1 tag – silnik bazy danych
. Opcją jest tu też po prostu zmiana bieżącego placeholdera w polu tekstowym dodawania tagów; osobiście jednak nie jestem fanem placeholderów, dlatego proponuję osobną etykietę.
- Od strony back-endu/bazy danych należy dla każdej kategorii, w której ma to sens, określić:
- tagi jakiego rodzaju będą wymagane (np. dla baz danych ten rodzaj to silnik bazy danych);
- konkretne tagi, jakie będą podpadać pod ten rodzaj (np. dla baz danych listę wszystkich silników baz danych, które chcemy, by można było podać).
- Podpowiedzi być nie musi. Jeśli jednak będą, to lista dostępnych tagów będzie wyświetlana tak samo*, jak podpowiedzi nazwy użytkownika przy tworzeniu postu czy komentarza – tylko nie trzeba będzie podawać znaku
@
.
Myślę, że nie ma sensu wprowadzać dla jakiejkolwiek kategorii więcej niż jednego tagu – z uwagi na to, by zakładanie tematu nie zaczęło wydawać się użytkownikom zbyt skomplikowane. Ale to tylko moje przeczucie.
UPDATE: * Oczywiście po umieszczeniu kursora w polu dodawania tagów.