Я променял пре­крас­ные статичные сайты на django-монстра 😱

Опубликовано 6 августа 2020 г.

Open-source Программирование

Мой прошлый сайт (oleggromov.com, сейчас там редирект сюда) был сгенерирован самописным генератором Feisty. У него есть крутая фишка: он поддерживает произвольную вложенность в yaml-шаблонах страниц, в которые можно включать либо md-файлы с контентом, либо другие yml. Благодаря этому каждая страничка собирается из небольшого дерева на файловой системе.

Кроме вложенности, крутота ещё в том, что контент разбит на произвольное количество мелких частей — и это очень удобно при вёрстке нелинейных страниц со всякими врезками, списками и прочим. Весь HTML, кроме базового форматирования, отдельно от контента.

Но у статики есть косяк, который я не могу побороть даже концептуально: отсутствие user-generated контента. Хочу я, чтобы комментарии посетителей оставались со мной навсегда — и для SEO, и чтоб владеть своими данными, и, потенциально, для email-рассылок. А никак. Есть только какая-то чепуха вроде комментариев в issues на гитхабе и какой-то треш вокруг всего этого — но это ж не серьёзно, плюс, опять же, данные мне не принадлежат.

И что же делать? Писать нового франкенштейна 🙂 Конечно же, Wordpress или {{ your_favorite_cms }} я брать не буду, потому что мне нужны мои любимые чанки — их я сделал как разложенные на строчки таблицы узлы дерева, каждый из которых доступен по своему пути. А Postgres замечательно индексирует их с помощью расширения ltree. Например, чтобы получить about.experience.klarna.period, можно сделать SELECT * FROM chunks WHERE path <@ ‘about.experience’.

К тому же комментарии, ради которых это все затевается, прекрасно ложатся в эту древовидную структуру. Красота да и только! Покажу вам потом, когда готово будет.

А пока вопрос на миллион: не порю ли я фигню? Нет ли какого-то более-менее адекватного способа прикрутить комментарии к статичному сайту? Ну, например, пересобирать страницу в момент отправки комментария каким-то третьим сервисом? Может, идея для стартапа? 😄

Читать дальше