2013-07-19 49 views
16

Tôi sử dụng Trang GitHub cho blog của mình và đang gặp sự cố với Jekyll. Post.html của tôi có một khối như sau:Làm thế nào để ngăn chặn dòng trống trong Jekyll?

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

Phần ở giữa không quan trọng. Phần quan trọng là phần cuối của dòng nằm ngoài đánh dấu {% %} và do đó được kết xuất thành html. Vì đây là một vòng lặp, nó đưa khoảng 1000 dòng trống vào giữa trang HTML. Nó không ảnh hưởng đến màn hình, nhưng nó làm cho một View/Source phiền hà.

Bất kỳ ý tưởng nào về cách tránh các dòng trống thừa đó?

Trả lời

4

Jekyll plugin có dải trắng.

Plugin Jekyll của Aucor: Plugins for eg. cắt không mong muốn dòng mới/khoảng trắng và sắp xếp các trang theo thuộc tính trọng số.

Bạn có thể tải trực tiếp từ số Github repository. Vì vậy, về cơ bản bạn quấn mã của bạn với {% strip %}{% endstrip %}. Ngay cả khi điều này không phù hợp với nhu cầu của bạn, bạn có thể dễ dàng thay đổi kịch bản ruby.

Ví dụ:

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

Tuy nhiên, xin nhớ bản chất của plugin Jekyll, bạn không thể chạy chúng trên máy chủ Github Pages.

Trích từ Jekyll Doccumentation:

GitHub trang được cung cấp bởi Jekyll, tuy nhiên tất cả các trang web Trang được tạo ra bằng cách sử dụng tùy chọn --safe để vô hiệu hóa các plugin tùy chỉnh vì lý do an ninh. Thật không may, điều này có nghĩa là các plugin của bạn sẽ không hoạt động nếu bạn đang triển khai tới Trang GitHub.

Bạn vẫn có thể sử dụng trang GitHub để xuất bản trang web của mình, nhưng bạn cần chuyển đổi trang cục bộ và đẩy tệp tĩnh được tạo vào kho lưu trữ GitHub thay vì tệp nguồn Jekyll.

12

Có một workaround tốt đẹp, mà tôi phát hiện ra trong https://github.com/plusjade/jekyll-bootstrap/blob/master/_includes/JB/setup, và đó tương thích với các trang github.

Chỉ cần đặt vòng lặp của bạn vào câu lệnh chụp và gán số không cho kết quả var.

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

* NB * - cách tiếp cận này chỉ áp dụng cho ** chất lỏng **. Nếu bạn làm điều này, bất kỳ nội dung ** html ** nào được tạo giữa các thẻ chụp đều bị bỏ qua hoàn toàn. –

+0

Điều này khá thông minh! Cảm ơn rất nhiều!! –

+0

Tôi không hiểu cách hoạt động của nó. Bất cứ ai có thể vui lòng giải thích? –

7

Làm thế nào về

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

Làm cách nào bạn có thể thực hiện việc này với một bao gồm như 'header.html'? –

+4

Đã tìm ra: '{% capture header%} {% include header.html%} {% endcapture%} {{header | strip_newlines}} ' –

2

Trên thực tế có một giải pháp mới cho vấn đề này mà hoạt động mà không bất kỳ plugin.

Bố cục Jekyll nén HTML.Trong nháy mắt:

  • xóa khoảng trống không cần thiết;
  • xóa thẻ kết thúc tùy chọn;
  • xóa thẻ bắt đầu tùy chọn;
  • xóa nhận xét;
  • giữ khoảng trắng trong phạm vi <pre>;
  • Trang GitHub tương thích;
  • bỏ qua môi trường phát triển;
  • các yếu tố bị ảnh hưởng có thể định cấu hình;
  • chế độ hồ sơ;
  • được kiểm tra tự động.

http://jch.penibelst.de/

Nếu bạn - vì một lý do - không muốn sử dụng ở đây là một bài viết tốt đẹp, trong đó mô tả một số cách giải quyết: Compressing Liquid generated code - sylvain durand

Các vấn đề liên quan