2013-07-19 10 views
16

Używam stron GitHub na moim blogu i mam problem z Jekyll. Mój post.html ma taki blok:Jak ukryć pustą linię w Jekyll?

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

Część w środku nie ma znaczenia. Ważną częścią jest koniec linii, która jest poza znacznikami {% %} i dlatego jest renderowana do HTML. Ponieważ jest to w pętli, umieszcza około 1000 pustych linii na środku strony HTML. Nie ma to wpływu na wyświetlacz, ale powoduje kłopot z widokiem/źródłem.

Wszelkie pomysły dotyczące unikania dodatkowych pustych linii?

Odpowiedz

4

Istnieje Jekyll plugin, który usuwa białe znaki.

Wtyczki Jekyll autorstwa Aucor: Wtyczki dla np. przycinanie niechcianych znaków nowej linii/białych znaków i sortowanie stron według wagi.

Można go uzyskać bezpośrednio z jego Github repository. Więc w zasadzie zawijasz swój kod na {% strip %}{% endstrip %}. Nawet jeśli to ci nie odpowiada, możesz łatwo zmienić skrypt ruby.

Na przykład:

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

jednak pamiętać naturę wtyczek Jekyll, nie można uruchomić je na serwerze Github Pages.

Cytat Jekyll Doccumentation:

GitHub Strony jest zasilany przez Jekylla, jednak wszystkie obiekty strony są generowane przy użyciu opcji --safe wyłączyć niestandardowych wtyczek ze względów bezpieczeństwa. Niestety oznacza to, że wtyczki nie będą działały, jeśli wdrażasz na stronach GitHub.

Możesz nadal używać stron GitHub do publikowania swojej witryny, ale musisz przekonwertować lokalnie lokację i przekazać wygenerowane pliki statyczne do repozytorium GitHub zamiast do plików źródłowych Jekyll.

12

Jest ładny obejście, że znalazłem się w https://github.com/plusjade/jekyll-bootstrap/blob/master/_includes/JB/setup i które jest kompatybilny ze stron GitHub.

Po prostu zamknij pętlę w instrukcji przechwytywania i przypisz zero do wynikowego var.

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

* UWAGA * - to podejście dotyczy tylko ** cieczy **. Jeśli to zrobisz, dowolna treść ** html ** generowana między tagami przechwytywania zostanie całkowicie pominięta. –

+0

To jest całkiem sprytne! Wielkie dzięki!! –

+0

Nie rozumiem, jak to działa. Czy ktoś może mi wyjaśnić? –

7

Jak o

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

W jaki sposób można to zrobić z dodatkiem takim jak 'header.html'? –

+4

Wyobraźmy sobie: '{% przechwytywania nagłówka%} {% include header.html%} {% endcapture%} {{header | strip_newlines}} ' –

2

Właściwie nie jest to nowe rozwiązanie dla tego problemu, który działa bez wtyczki.

Układ Jekylla, który kompresuje HTML.W skrócie:

  • usuwa niepotrzebne białe znaki;
  • usuwa opcjonalne znaczniki końcowe;
  • usuwa opcjonalne tagi startowe;
  • usuwa komentarze;
  • zachowuje spację w obrębie <pre>;
  • GitHub Pages zgodne;
  • ignoruje środowiska programistyczne;
  • konfigurowalne zmienione elementy;
  • tryb profilu;
  • testowany automatycznie.

http://jch.penibelst.de/

Jeśli - z jakiegoś powodu - nie chcą korzystać z tego tutaj jest ładny artykuł, który opisuje pewne obejścia: Compressing Liquid generated code - sylvain durand

Powiązane problemy