РедактироватьСоздать страницу
Обзор движка WikiClick (на котором работает этот сайт)

WikiClick - русский компактный вики-движок для node.js

Сервер движка использует фреймворк express и базу данных MySQL, а на фронтенде - jQuery. Серверная часть написана чуть более чем в 1000 строк и помещена в один файл. Многие функции движка реализованы на стороне клиента, например, навигационное оглавление для статей, закладки, вывод дерева комментариев. На главной странице движка ведется журнал версий публикаций и журнал комментариев со ссылками на последние обновления сайта. В WikiClick нет регистрации, но публикация статей и комментариев защищена каптчей, как и вход в админ-панель. Также, собственные комментарии на страницах можно редактировать (до тех пор пока не истекло время сессии), а IP адреса авторов записываются в БД. Кроме того в комментариях поддерживается вставка ссылок и картинок (по ссылке).

Умные журналы

Права администратора


Структура сайта на WikiClick

Модель статьи

Статьи принадлежат к одному разделу из списка, имеют уникальную alias-ссылку, содержание (на html), краткое описание до 255 символов (оно же meta description), теги до 10 штук (они же meta keywords, а также у каждой статьи есть дополнительный keyword wiki для поисковиков), есть превьюшка (которая будет использоваться в любом из трех поисков по сайту), ip тоже сохраняется, но анонимно. Статья с главной страницы имеет особый приоритет, у нее также есть description и keywords, но настроить ее можно только редактируя шаблон Start.html, относящийся к главной странице, - таким образом она защищена от правок. В просмотре страницы доступны ссылки на ее предыдущие версии. Пользователи могут добавлять в закладки любые созданные страницы.

Три вида поиска

Поиск производится только по актуальным версиям статей, а сам список актуальных id версий хранится в таблице pagescache и обновляется при создании или удалении значимых версий (при переносе статьи на другую ссылку id версии не меняется, поэтому кэш-таблица не нуждается в обновлении). Эта таблица регенерируется с нуля при запуске сервера. Каждый поиск при достижении определенного лимита разбивается на страницы, для которых используется шаблон Cat.html. Теперь можно разобрать и те самые три вида поиска: В каждом из поисков выводятся алиас-ссылки на созданные страницы, краткое описание, список тегов (тоже со ссылками) а также картинка-превью (или /public/preview.gif, если у страницы нет собственной миниатюры). Любые картинки загружаются в /uploads/.
Кроме того pagescache используется и в рандомайзере /случайная_страница/

Ajax-комментарии

Комментарии достаются с сервера в формате json, заранее отсортированные определенным образом для дальнейшего построения html-дерева на стороне клиента. За передачу данных на стороне сервера отвечают два аналогичных роутера (/comments-json/ - для главной страницы, /:cat/:alias/comments-json/ - для созданных страниц). Комментарии пришиваются к страницам по ссылке, в таблице comments есть атрибут pagealias, хранящий ссылку, например у этой страницы pagealias равен dev/WikiClick_(движок). У главной страницы pagealias записывается в один символ /.

Как добавить комменты на системные страницы?

Например мы хотим сделать комменты на странице /тег/хабр/, и что бы эти же комменты отображались на /тег/хабр/страница_1, /тег/хабр/страница_2 и т.д. Тогда:
  1. создайте два новых роутера из comments-json и add-comment с адресами:
    • '/'+encodeURIComponent('тег')+'/'+encodeURIComponent('хабр')+'/comments-json'
    • '/'+encodeURIComponent('тег')+'/'+encodeURIComponent('хабр')+'/add-comment'
  2. убедитесь что pagealias в новых роутерах не путается с категориями и разделен одним слешем, мой вариант: тег/хабр (хотя лучше с префиксом @тег/хабр - так мы явно укажем первым знаком, что этот тип комментариев не относится к базовым типам, и его нужно обработать особым образом
  3. поправьте вывод журнала комментариев, сделав проверку на префикс к pagealias (небольшие изменения)
  4. добавьте кнопку загрузки комментов в шаблон (в нашем примере это частный случай шаблона Cat.html)

Плюсы и минусы движка

Плюсы

Минусы

  1. Комментарии к страницам работают через ajax для уменьшения нагрузки на сервер, но это затрудняет их индексацию поисковыми роботами.
  2. Пока нет поддержки https, но думаю, что те, кто разбираются в этом, могут настроить ее самостоятельно.
  3. Нет визуального редактора, но учитывая их общую косячность, появится он еще не скоро.
  4. Других минусов нет. Движок очень красивый, удобный и дружит с SEO

Как сделать комментарии доступными для поисковых машин?

Если для Вас важна индексация комментариев поисковыми машинами, вы можете сортировать их по id на стороне сервера, и вывести потом внутри нужных шаблонов свой блок комментов, который будет скрываться после загрузки страницы. Тогда все комментарии попадут в поисковые системы, но юзеру будут показаны только по требованию (с тем же содержанием, но отличающейся структурой следования).
Почему сразу не генерировать древовидную структуру на сервере? Потому что нет нормальной работы с DOM и приходится генерировать вывод последовательно, дописывая что-то в конец результирующей строки, вместо того чтобы вставлять html-текст туда куда нужно: это многократно увеличивает как сложность разработки, так и нагрузку на сервер. Описанный алгоритм сделает Ваши комментарии доступными для обработки поисковыми машинами, при этом не нагружая код сервера моделированием древовидной структуры.

Админка

Окно авторизации /admin/

Управление контентом



Ссылки

Проект на GitHub
#javascript#node.js#wiki#cms

перейти к основнойВерсия от 3 сентября 2020 23:27

Комментарии (1)