функциональность
Многопользовательский режим в S2
Многопользовательский режим — это одна из тех вещей, которые я хочу сделать перед окончательным выпуском S2. Формально многопользовательский режим имеется — администратор сайта, работающего на S2, может сделать несколько учетных записей для авторов и модераторов. Однако сейчас доступ пользователей ограничивается недостаточно. Например, если пользователю разрешить изменение страниц, он сможет редактировать страницы, созданные другими авторами, что не всегда допустимо. Также в текущей реализации нет возможности показать посетителям сайта, что над ним работает не один автор, а целый коллектив.
Как в идеале должен работать многопользовательский режим? В нем можно выделить три составляющих:
- регистрация — иногда администратор не должен добавлять вручную каждого пользователя;
- профиль — отображение на сайте информации о зарегистрированном пользователе;
- управление правами пользователей.
Последний пункт подразумевает привязку каждой страницы к ее автору, чтобы страницу, созданную одним автором, не могли изменять другие авторы, а только редакторы или модераторы с расширенными правами. Отображение имени автора рядом с датой создания материала должно включаться в параметрах или через шаблоны. Если в параметрах включены профили, то с имени автора должна стоять ссылка на его профиль.
После введения регистрации в принципе можно привязывать к учетным записям и комментарии, что позволит разрешать комментарии только зарегистрированным пользователям. Однако такую привязку я делать не планирую.
Есть несколько путей реализации этих идей. Первый путь — всё запрограммировать самому. Второй — не изобретать велосипед, а сделать расширение для интеграции с форумным движком PunBB. Он обладает мощной и гибкой системой управления правами пользователей, группами, банами и т. д. В PunBB есть регистрация и профили. После установки подобного расширения текущие учетные записи S2 будут заменяться на форумные учетные записи, при этом сам форум станет приятным дополнением :)
Я склоняюсь ко второму варианту — интеграции с PunBB, но хотел бы услышать и мнения заинтересованных лиц.
А еще я надеюсь, что в ближайшее время разработка S2 пойдет активнее, и через несколько месяцев появится
Поиск
Трудно спорить с тем, что поиск на сайтах — вещь нужная и полезная. Однако сейчас в S2 поиска нет. Я собираюсь рассказать, почему.
S2 — простой и быстрый движок, и хотелось бы так же просто и быстро к нему прикрутить поиск. Проблема в том, что хороший поиск просто и быстро сделать нельзя.
Сначала определимся с тем, что такое хороший поиск. Поиск хороший тогда, когда результаты упорядочены по релевантности (степени соответствия запросу). Под релевантностью каждый может понимать
- русская морфология (учет изменений слов по падежам, числам, временам, лицам);
- выделение курсивом или жирным шрифтом (если слово выделено на
какой-то странице, эта страница, скорее всего, больше соответствует запросу); - частотность (сколько раз слово встречается на данной странице);
- степень уникальности (если слово из запроса редко встречается на остальных страницах, данную страницу нужно поместить в результатах поиска выше).
Из самых общих соображений поиск можно сделать следующими способами:
- LIKE или strpos.
Fulltext-индексы базы данных.- Создание собственных поисковых индексов.
- Сторонние поисковые движки.
- Сторонние сервисы.
Первым способом практически невозможно учитывать выделенные нами четыре составляющих релевантности. Второй способ хорош, но, к сожалению, только для английского языка.
Третьим способом, при помощи своего индекса, можно сделать практически всё, что угодно. Но этот способ наиболее сложен. Здесь недостаточно просто запрограммировать функциональность. Нужно продумать и учесть масштабируемость решения как по количеству страниц, так и по посещаемости. В общем, этот случай — один из тех, когда 20% функциональности требуют 80% затрат времени :)
Здесь легко встать на путь изобретения велосипедов. Ведь уже есть поисковые движки, бесплатные и не очень, которые умеют быстро индексировать поля баз данных и быстро искать по ним (четвертый способ). К сожалению, во многих случаях на серверы хостинга нельзя устанавливать дополнительное программное обеспечение. Да и делать на S2 сайты, которым требуются подобные поисковые движки, скорее всего никто не будет.
К счастью, есть еще один способ, в котором минимальные затраты приносят ощутимый результат. На сайте достаточно расположить форму поиска Гугла, примерно так, как это сделано в документации Apache. Действительно, как бы мы ни старались, вряд ли у нас получится поиск лучше, чем у Яндекса или Гугла. Обычно я пользуюсь Гуглом, когда ищу
Единственный недостаток пятого способа, который можно придумать, — на странице результатов поиска будет чужая реклама. Но на фоне минимальных затрат и приличного качества поиска этот недостаток вполне можно потерпеть.
Я не планирую включать поиск в ядро S2. Поиск можно будет сделать отдельным расширением, но в силу описанных выше причин эта задача далеко не самая приоритетная.
Добавлено: Я