Ось це по другому пункту
Система тегів
plusxx:
Зв'язок таблиці тегів з таблицею користувачів та таблицею постів в базі даних буде ревлізовано на зв’язках типу Many-to-Many.
Після реєстрації новому користувачеві даються до вибору цікаві йому теги зі списку так як в Pinterest чи Artstation.
При створенні нових трідів користувач повинен мати змогу вибрати готові теги, а також додавання своїх,нових
тегів.
Нові теги на стороні сервера будуть додаватися до таблиці тегів.
Розділи потрібні для структуризації видачі даних для користувачів
P.Y.:
А якщо зробити так:
Є теги обов'язкові (вони ж розділи) і є теги додаткові (які користувач може довільно створювати сам).
При створенні теми (тріду, обговорення, бесіди... — тут і далі називатиму це темою), має бути задано щонайменше 1 обов'язковий тег.
Тегів може бути кілька, серед них можуть бути як обов'язкові, так і додаткові, але максимальну кількість тегів в одній темі варто обмежити, щоб запобігти спаму тегами для штучного привернення уваги.
Обов'язкові теги-розділи структуровано в ієрархію розділів, яка відображається на головній сторінці — оскільки в кожній темі є 1 чи більше обов'язкових тегів, до неї можна дістатись, не вдаючись до пошуку та іншої магії.
Модератори можуть перетворювати додаткові теги на обов'язкові, вбудовуючи їх в ієрархію розділів.
Також вони (модератори) можуть робити обов'язкові теги додатковими (фактично, видаляти розділ з ієрархії).
Якщо внаслідок такої дії в деяких темах залишаються тільки теги, що стали додатковими, то до таких тем автоматично додається обов'язковий тег «все інше», який теж відображається як розділ у загальній ієрархії.
На сторінці тегу має бути кнопка «створити тему», яка відкриває форму для створення теми з уже доданим цим тегом.
Інші теги можна вписати руками чи вибрати в меню (яке повторює ієрархію розділів).
Якщо користувач відредагував форму так, що в списку тегів нема жодного обов'язкового, у формі з'являється повідомлення, що треба вказати хоча б один обов'язковий тег, створення теми блокується.
У варіанті без JS, список вибраних тегів у формі створення теми являтиме собою текстову область, куди користувач може вписати один або кілька тегів (один рядок — один тег).
Можна залишити цю текстову область і в варіанті з JS, а коли користувач вибирає тег у меню тегів, то цей тег просто додається до списку вибраних тегів як ще один рядок (або ж можна придумати щось складніше, щоб користувач міг викидати зайві теги одним кліком).
ostap34PHP:
Розділити теги на два поля у формі створення теми. Наприклад у devtalk, erlangforums та elixirforum обов'язкові теги називають категоріями.
koala:
Можна ще додати пропозицію поширених тегів за ключовими словами (наприклад, якщо згадані C++ чи є слово void, то над кнопкою "запостити" пропонується додати тег C++).
Думаю що дуже скоро з цим пунктом можна буде дійти до кінця і скласти конкретні кінцеві формулювання.