Знаете ли вы, что пеликаны могут есть чертовых черепах?
Неудивительно, что они ходят как задиры ОГ.
Ага, пеликан, птичка действительно классная.
Но так же и Пеликан, генератор статических сайтов. Специально для создания блога бережливых разработчиков.
В этом руководстве я покажу вам, как использовать генератор статических сайтов Pelican на базе Python (SSG) для быстрого создания элегантного блога.
Я также сделаю это лучше, добавив на сайт статические комментарии и функцию поиска.
Примечание. Это не первое мое родео со статическими сайтами. Я показал нашим читателям, как добавить электронную коммерцию в Jekyll, Hugo, Gatsby и многие другие SSG. Но сегодня ни электронной коммерции, ни Snipcart. Я просто расскажу о простом, простом руководстве для блога разработчиков! :)
Этот пост будет охватывать:
- Как создать блог Пеликана и изменить его тему
- Как добавить плагин Tipue Search
- Как включить статические комментарии в Staticman
- Как разместить сайт Pelican на страницах GitHub
Готовы к взлету?
Пеликан, статический генератор на Python
Проще говоря, Pelican - это отличный генератор статических сайтов, написанный на Python.
Как и все SSG, он обеспечивает сверхбыстрое создание веб-сайтов. Никакой тяжелой документации, простой установки и мощных функций (плагины и расширяемость). Кроме того, вы получаете все преимущества статического сайта: дешевый, портативный, безопасный, легкий, простой в размещении. Как платформа для ведения блогов, Pelican также позволяет вам владеть всем вашим контентом, даже комментариями (благодаря Staticman). Нет необходимости полагаться на доверенные третьи стороны, такие как Medium.
С помощью хорошо продуманного интерфейса командной строки Pelican вы можете создавать свой сайт, переключать темы и отправлять контент, не покидая консоли. Идеально подходит для блога разработчиков!
Существует также огромная коллекция тем с открытым исходным кодом на выбор.
Примечание: если вы поклонник Python, ознакомьтесь с нашей электронной коммерцией Django с Wagtail!
Pelican Tutorial: блог разработчиков с комментариями и поиском
Хорошо, амиго, давайте перейдем к сути дела.
Обязательное условие
- Python установлен с диспетчером пакетов pip
1. Создание статического блога
Первое, что нужно сделать, - это просто создать веб-сайт с помощью интерфейса командной строки. Это даст нам файловую структуру, необходимую для немедленной настройки нашей установки.
- создайте новую папку для вашего проекта
- откройте в нем консоль
- установите пакет Python Pelican с
pip install pelican
Как только это будет сделано, сразу используйте интерфейс командной строки, чтобы создать строительные леса с помощью pelican-quickstart
Вот как должна выглядеть ваша конфигурация:
Для демонстрации я хотел немного поиграть с некоторыми темами, поэтому я решил клонировать репозиторий allpelican-themes
. Вы можете сделать это с помощью git clone [email protected]:getpelican/pelican-themes.git
в папке по вашему выбору.
2. Создание контента блога в Markdown
Чтобы сделать эту демонстрацию менее надуманной, я использовал настоящий открытый контент с сайта Aeon.
Вы можете создать новую папку, чтобы упорядочить содержимое. Но для простоты этой демонстрации я создал все прямо в папке содержимого.
Запустите ваш любимый текстовый редактор и откройте папку с содержимым. Создайте файл nameare-you-just-inside-your-skin-or-is-your-smartphone-part-of-you.md
. Как видите, расширение файла - .md
, поэтому мы будем использовать формат Markdown для определения нашего содержимого. Файл Markdown объявляется с метаданными (в начале файла), за которыми следует фактическое содержимое. Файлы Пеликана поддерживают множество полей метаданных. Об этом стоит прочитать их документацию здесь.
Теперь вернемся к только что созданному файлу. Откройте и заполните его актуальным контентом (наш источник Aeon):
Вы можете повторить этот шаг со всем необходимым вам контентом. Как только у вас появится контент, вы будете готовы создать блог.
3. Изменение темы «Пеликан»
Перейдите в папку, которую мы клонировали ранее, и скопируйте выбранную тему в корневую папку вашего проекта. Затем в той же папке запустите pelican-themes -i {your_theme_name}
.
Вы готовы дать своему сайту первый шанс. Чтобы сгенерировать его, снова в той же папке запустите pelican -t {your_theme_name}
. Это сгенерирует ваш веб-сайт с указанной темой и поместит его в выходную папку.
Просто обслуживайте сайт тем, что вам подходит. Я выбрал Node's http-server
. Вот мой результат с использованием моноширинной темы:
Примечание: если вы хотите настраивать и создавать темы Pelican, ознакомьтесь с его языком шаблонов Python Jinja2
4. Добавление поискового плагина Tipue.
Теперь я знаю, что есть множество способов выполнить поиск на статическом сайте. Третьи лица - Algolia и другие. Серверный поиск. Клиентские поиски. По правде говоря, большинство из них - излишек для моей скромной демонстрации. 😏
Итак, чтобы добавить в блог функцию поиска, я воспользуюсь специальным поисковым плагином для Pelican. В этом суб-репо много плагинов, но нас здесь интересует tipue-search
.
Установите требуемый пакет Python с pip install beautifulsoup4
. Затем клонируйте папку проекта и зарегистрируйте ее в своем pelicanconf.py
файле. Вы сможете сделать это, просто добавив следующую строку: PLUGINS = ['tipue_search.tipue_search']
. Если вы повторно сгенерируете свой веб-сайт, вы увидите новый файл с именем tipuesearch_content.json
. Это статический контент, который будет использовать поиск. Теперь вам нужно только изменить шаблоны вашей темы, чтобы добавить поиск.
Перейти в monospace/base.html
- шаблон, используемый для каждой страницы. Там добавьте jQuery
и tipue-search
со следующим HTML.
Теперь добавьте этот код в раздел <div id ="sidebar">
:
И следующий код JavaScript, снова в том же base.html
файле:
Вот и все! Теперь у вас должен быть статический поиск прямо на нашем сайте. Восстановите свой блог и посмотрите на результат. Вот как выглядит мое окно поиска и результаты:
5. Добавление статических комментариев с помощью Staticman
Большинство людей по умолчанию использует Disqus для обработки комментариев на своих сайтах. Также существует плагин статических комментариев Disqus для Pelican. Теперь у меня нет личных претензий к Disqus. Но мне было бы трудно игнорировать проблему номер один, связанную с доверием этой третьей стороне, даже в ее статической форме.
→ Комментарии размещаются на серверах Disqus - контент не принадлежит.
Статикмен решает все вышеперечисленное. Это и, конечно же, простая проблема, от которой страдают большинство статических сайтов: добавление форм для пользовательского контента без серверной части. Staticman идеально подходит для комментариев читателей, а также для систем голосования или отзывов пользователей. Чтобы узнать больше о его сверхспособностях, прочтите этот полный пост моего коллеги Жана-Себа, также известного как Мамблдор.
Заявление об ограничении ответственности: Snipcart спонсирует проект с открытым исходным кодом Staticman.
Итак, для наглядности вот список альтернативных статических комментариев, которые вы могли бы рассмотреть.
Теперь о технической части.
Я пропущу стандартную конфигурацию Staticman, поскольку она действительно проста и хорошо объяснена здесь.
После того, как у вас будет репозиторий с приложением в качестве участника, вам нужно будет добавить файл конфигурации и необходимые шаблоны для отправки и отображения данных. Создайте файл staticman.yml со следующим содержимым:
Теперь перейдите в monospace/templates/article.html
и добавьте следующее сразу после строки {{ article.content }}
:
Это форма, используемая для отправки комментариев в Staticman. Последний подтолкнет их и включит в ваше репо. Таким образом, ваш веб-сайт сможет отображать их без каких-либо внешних вызовов.
Чтобы сначала отобразить их, давайте преобразуем эти комментарии в JSON в наших шаблонах, поскольку на данный момент они находятся в YML. Сначала загрузите пакет pyyml
python с pip install pyyaml
.
Как только это будет сделано, перейдите к pelicanconf.py
. Здесь вы будете включать свои комментарии.
Добавьте следующие строки, где хотите:
Это загрузит каждый файл комментариев .yml, проанализирует его в JSON и представит их как массив. Любая переменная с заглавными буквами в этом файле будет отображаться внутри шаблонов Jinja2, что означает, что у вас будет доступ к комментариям в любом шаблоне.
Что вы хотите сделать сейчас, так это отобразить комментарии к совпадающим статьям. В article.html
добавьте этот раздел между строкой {{ article.content }}
и только что добавленной формой:
Вот краткий обзор наших статических комментариев.
А теперь давайте разместим этот статический блог!
6. Размещение вашего блога Pelican на Netlify
Я бы хотел разместить все на страницах GitHub, так как это хорошо сочетается с Pelican. Но поскольку мне нужно было перестроить проект после того, как был добавлен комментарий, чтобы поддерживать веб-сайт в актуальном состоянии, я решил использовать Netlify. Как только новый комментарий будет отправлен, Netlify получит уведомление, перестроит веб-сайт и разместит его с новым комментарием. Для этого добавьте requirements.txt
в папку вашего проекта и добавьте в него следующие строки:
pelican
pyyaml
markdown
beautifulsoup4
Это файл, который будет использоваться Netlify для загрузки зависимостей проекта. Теперь поместите свой код в репо и нажмите netlify.com. После входа в систему нажмите new site from GIT
и выберите репозиторий проекта со следующими настройками:
Развертывание начнется сразу, и ваш сайт должен заработать через минуту! Обратите внимание, что сайт необходимо перестроить, чтобы появились новые комментарии.
Живая демонстрация и репозиторий на GitHub
См. живую демонстрацию здесь.
См. репозиторий GitHub здесь.
Заключительные мысли
Эта демонстрация заняла у меня 1-2 часа благодаря документации Pelican и простоте Staticman.
Мне очень понравилось играть с Пеликаном! Я какое-то время не работал со статическим генератором и скучал по ним. Документы были отличными и краткими. Проблема была в основном с Python. Я действительно не писал много об этом, но я никогда раньше не работал с Python, так что было интересно попробовать.
Я бы хотел расширить поиск, на данный момент он прост в использовании и настройке, но не будет оптимальным для большого количества записей в блоге. Первое, что я сделал бы, чтобы масштабировать это, - это поручить поиск чему-то вроде Algolia. Это было бы намного быстрее и мощнее / масштабируемее, чем то, что есть сейчас.
Удачного кодирования!
Если вам понравился этот пост, поделитесь им в Твиттере. Есть комментарии, вопросы? Добавьте их ниже!
Изначально я опубликовал это в блоге Snipcart и поделился им в нашем информационном бюллетене.