Jekyll: Как использовать пользовательские плагины со страницами GitHub - PullRequest
0 голосов
/ 08 ноября 2018

Оказывается, что пользовательские плагины ruby ​​не работают на страницах GitHub из-за проблем безопасности .

Я пытаюсь добавить плагин ( этот ) в папку _plugins моего проекта Jekyll, но при развертывании его на GitHub он игнорируется.

Вопрос: Есть ли способ обойти это?Кто-нибудь нашел решение?

Примечание: Очевидно, что я могу создавать html-файлы локально и фиксировать их в своем хранилище.Но это не то, чего я хочу.

Ответы [ 3 ]

0 голосов
/ 11 ноября 2018

без плагина

Скрипт времени чтения не требует плагина. Я создал коллекцию скриптов, которые можно добавлять без использования плагина. Вы можете найти их здесь . Сценарий времени чтения является одним из них.

Здесь вы найдете код:

{% capture words %}
{{ content | number_of_words | minus: 180 }}
{% endcapture %}
{% unless words contains '-' %}
{{ words | plus: 180 | divided_by: 180 | append: ' minutes to read' }}
{% endunless %}

Обратите внимание, что этот код содержит только Liquid и не Ruby. Поэтому его можно использовать в вашем макете или во включении (без плагина).

Оптимизация скрипта

Предположим, у вас есть что-то вроде этого:

<p>lorem ipsum</p>
<p>lorem ipsum</p>
<code>lorem ipsum</code>
<p>lorem ipsum</p>
<code>lorem ipsum</code>
<p>lorem ipsum</p>

Тогда вы можете удалить приведенные выше блоки кода следующим образом:

{% assign preprocessed_content=post.content | replace: '<p>', '__p__' %}
{% assign preprocessed_content=preprocessed_content | replace: '</p>', '__/p__' %}
{% assign truncated_content=preprocessed_content | strip_html %}
{% assign cleaned_content=truncated_content | replace: '__p__', '<p>' %}
{% assign cleaned_content=cleaned_content | replace: '__/p__', '</p>' %}

Конечно, это может быть расширено для поддержки большего количества тегов.

Использование плагина в любом случае

Если вы ДЕЙСТВИТЕЛЬНО хотите использовать плагин, вы можете позволить своему локальному компьютеру или CloudCannon создать свой сайт и отправить результат на Github Pages. Смотрите также: https://learn.cloudcannon.com/jekyll/using-jekyll-plugins/

0 голосов
/ 21 июня 2019

Если вы хотите использовать свои собственные плагины, вам нужно «построить» свой сайт локально, а затем развернуть его в ветке gh-pages самостоятельно, в виде набора HTML, CSS и других файлов (больше не файлов Markdown). Вы можете попробовать jgd командную строку, чтобы помочь вам сделать все это автоматически. Просто установите его и запустите:

$ jgd

Сайт будет упакован и затем развернут в ветке gh-pages вашего репо. Подробнее об этом в моем блоге: Развертывание Jekyll на страницах GitHub

0 голосов
/ 11 ноября 2018

Вам нужна альтернатива этим плагинам.

Как подробно описано в " Создание списка серий с помощью коротких кодов Hugo ":

На всех страницах Github отключено выполнение плагина Ruby:

Плагины на страницах GitHub GitHub Pages работает на Jekyll.
Однако все сайты страниц создаются с использованием опции -safe для отключения пользовательских плагинов по соображениям безопасности .К сожалению, это означает, что ваши плагины не будут работать, если вы развертываете на GitHub Pages.

Вы все еще можете использовать GitHub Pages для публикации своего сайта, , но вам нужно будет конвертировать сайт локально ипоместите сгенерированные статические файлы в ваш репозиторий GitHub вместо исходных файлов Jekyll .

Я понимаю, вы упомянули:

Очевидно, что я могу генерировать html-файлы локально иотправить их в мой репозиторий.Но это не то, чего я хочу.

Тем не менее, статический генератор веб-сайтов (совместимый со страницами GitHub), такой как Hugo , должен рассматриваться в вашем случае.

RJ Lorimer добавляет:

У Хьюго есть концепция шорткоды , которые очень похожи на «LiquidТеги »в Jekyll.
Также как Jekyll, вы можете создавать собственные теги шорткода.

Однако главное отличие в том, что в Hugo вы можете создавать их, не прибегая к написанию кода Go - см. Создание собственных коротких кодов .
Поскольку Hugo использует шаблоны Go для рендерингастраницы, шорткоды могут использовать любые функции шаблона Go внутри них, а также целый список пользовательских функций Hugo, добавленных для помощи.Это делает его, возможно, более мощным, чем решение на основе жидких шаблонов, но все же в файле шаблонов, который можно легко обновить на лету.

Кроме того, Хьюго поддерживает MathJax , как показано в этой статье .

Обновление ноябрь 2018: с Хьюго0,52 , этот твит подтверждает (ссылается эта тема ):

встроенный короткий код аналогично тому, как Jekyll позволяет использовать теги Liquid в Markdown

...