2012-04-28 42 views
6

Trong blog Jekyll của tôi, tôi muốn một số bài đăng không có tiêu đề. Làm thế nào tôi có thể sửa đổi các mã Jekyll để làm cho nó để các bài viết không yêu cầu một tiêu đề?Đăng không có tiêu đề trong Jekyll

+0

Bạn đã thử tải xuống nguồn và xem qua nội dung về các bài đăng chưa? – huon

+1

Tôi biết rất ít Ruby! –

+0

Đó là ok, tôi chắc chắn bạn có thể nhận đủ để làm những gì bạn muốn (Tôi không biết nhiều Ruby hoặc). Để biết thêm chi tiết, bạn có nghĩa là tên tệp không phải ở dạng 'year-month-day-title'? Hoặc vì vậy mà bạn không cần một 'tiêu đề: ...' ở phía trước của một bài viết? – huon

Trả lời

8

Bạn không cần thay đổi mã vạch jekyll để xóa tiêu đề. Điều đó có thể được thực hiện bằng cách sử dụng các bố trí khác nhau với các bộ lọc và thẻ chất lỏng thích hợp.

Đối với các trang bài đăng riêng lẻ, chỉ cần tạo tệp bố cục mới (ví dụ: "_layouts/no-title-post.html") không có thẻ chất lỏng {{ page.title }}. Trong tệp nguồn _posts của bạn, đặt vấn đề phía trước YAML để gọi nó. Ví dụ:

--- 
layout: no-title-post 
--- 

Lưu ý rằng "tiêu đề:" không bắt buộc trong nội dung YAML. Nếu jekyll cần nó, giá trị sẽ được tự động crated từ tên tập tin. Ví dụ: "_posts/2012-04-29-a-new-post.md" sẽ tự động đặt biến tiêu đề thành "A New Post". Nếu các mẫu của bạn không gọi các thẻ tiêu đề, nó sẽ không thành vấn đề. Bạn có thể bao gồm một "tiêu đề:" trong vấn đề phía trước và nó chỉ đơn giản là sẽ không được hiển thị.

Bạn cũng có thể hiển thị trang mà không có tiêu đề trong danh sách/trang chỉ mục của mình. Kiểm tra bố cục bài đăng để xác định xem tiêu đề có nên được hiển thị hay không. Ví dụ, để hiển thị tiêu đề trên tất cả các trang của bạn trừ những người mà có 'không-tên-bài' bố trí, bạn sẽ làm một cái gì đó như thế này:

{% for post in paginator.posts %} 
    {% if post.layout != 'no-title-post' %} 
    <h1><a href="{{ post.url }}">{{ post.title }}</a></h1> 
    {% endif %} 

    <div class="postContent"> 
    {{ post.content }} 
    </div> 
{% endfor %} 

Trong trường hợp đó, các liên kết đến trang đó cũng bị xóa. Nếu trang cần phải được địa chỉ, bạn sẽ phải thêm liên kết trở lại ở một nơi khác.

1

Tôi đã có những nghi ngờ tương tự, sau đó tôi vấp vào giải pháp thực sự đơn giản này:

{% if post.title %} 
    <h1><a href="{{ post.url }}">{{ post.title }}</a></h1> 
{% endif %} 

Và sau đó trong bài tập tin bản thân bạn sẽ rời khỏi title biến rỗng:

--- 
layout: post 
title:  
--- 

này , h1 sẽ không in nếu tiêu đề trống. Tôi thấy phương pháp này đặc biệt hữu ích cho các loại bài đăng như dấu ngoặc kép, phần lớn thời gian không có tiêu đề.

2

edemundo 's giải pháp không làm việc nữa trong mọi trường hợp với Jekyll 3.

tôi sử dụng một tiêu đề trống như mặc định:

defaults: 
    - 
    scope: 
     type: "posts" 
    values: 
     layout: "post" 
     title: "" 

Sau đó, bạn có thể so sánh danh hiệu so với chuỗi rỗng trong bố cục của bạn, ví dụ:

{% if post.title == "" %} 
    {{ post.content | strip_html | truncatewords:5 }} 
{% else %} 
    {{ post.title }} 
{% endif %} 

Nếu bạn thích thế hệ tiêu đề tự động, bạn có thể sử dụng làm mặt trước:

--- 
title: "" 
--- 
+0

điều này làm việc rất độc đáo với cài đặt jekyll/poole. – gvoysey

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