2013-07-19 4 views
16

Я использую страницы GitHub для своего блога, и у меня проблема с Jekyll. Мой post.html имеет такой блок:Как подавить пустую строку в Jekyll?

{% for testpost in site.posts %} 
{%   four     %} 
{%   lines of    %} 
{%   processing    %} 
{%   goes here    %} 
{% endfor      %} 

Часть в середине не имеет значения. Важной частью является конец строки, которая находится за пределами разметки {% %}, и поэтому отображается в html. Поскольку он находится в цикле, он помещает около 1000 пустых строк в середину страницы HTML. Это не влияет на отображение, но это делает проблему View/Source проблемой.

Любые идеи о том, как избежать лишних лишних строк?

ответ

4

Существует Jekyll plugin, который пропускает пробелы.

Плагины Jekyll от Aucor: плагины, например. обрезка нежелательных ссылок на новые строки/пробелы и сортировки по весу.

Вы можете получить его непосредственно из своего Github repository. Таким образом, в основном вы завершаете свой код {% strip %}{% endstrip %}. Даже если это вам не подходит, вы можете легко изменить рубиновый скрипт.

Например:

{% strip %} 
    {% for testpost in site.posts %} 
    {%   four     %} 
    {%   lines of    %} 
    {%   processing    %} 
    {%   goes here    %} 
    {% endfor      %} 
{% endstrip %} 

Однако, пожалуйста, помните природу плагинов Джекилл, вы не можете запустить их на сервере Github Pages.

Цитата Jekyll Doccumentation:

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

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

12

Там хороший обходной путь, который я нашел в https://github.com/plusjade/jekyll-bootstrap/blob/master/_includes/JB/setup, и который совместим с GitHub страниц.

Просто заключите свою петлю в оператор захвата и назначьте нуль полученному var.

{% capture cache %} 
    {% for p in site.posts %} 
     do stuff here 
    {% endfor %} 
{% endcapture %}{% assign cache = nil %} 
+2

* NB * - этот подход применяется только к ** жидкости **. Если вы это сделаете, содержимое ** html **, которое создается между тегами захвата, полностью опущено. –

+0

Это довольно умно! Большое спасибо!! –

+0

Я не понимаю, как это работает. Может кто-нибудь объяснить? –

7

Как насчет

{{ page.content | escape | strip_newlines }} 
+0

Как вы можете сделать это с помощью include, такого как 'header.html'? –

+4

Вычислено: '{% capture header%} {% include header.html%} {% endcapture%} {{header | strip_newlines}} ' –

2

На самом деле есть новое решение для этой проблемы, которая работает без каких-либо плагинов.

Jekyll layout, который сжимает HTML.Взгляд:

  • удаляет ненужные пробелы;
  • удаляет дополнительные концевые метки;
  • удаляет необязательные стартовые метки;
  • удаляет комментарии;
  • сохраняет пробелы в пределах <pre>;
  • GitHub Страницы совместимые;
  • игнорирует среды разработки;
  • настраиваемые элементы воздействия;
  • режим профилей;
  • автоматически проверено.

http://jch.penibelst.de/

Если вы - по какой-то причине - не хочу использовать это здесь хорошая статья, которая описывает некоторые обходные пути: Compressing Liquid generated code - sylvain durand