2012-04-28 5 views
6

В моем блоге Jekyll я бы хотел, чтобы некоторые должности не имели названия. Как я могу изменить Jekyll codebase, чтобы сделать это так, чтобы сообщения не нуждались в заголовке?Сообщение без заголовка в Jekyll

+0

Вы пробовали загрузить исходный код и просмотреть его для публикации статей? – huon

+1

Я знаю очень мало Руби! –

+0

Все в порядке, я уверен, что вы можете подобрать достаточно, чтобы делать то, что хотите (я тоже мало знаю о Руби). Для получения дополнительной информации вы имеете в виду, что имя файла не должно быть в форме «year-month-day-title»? Или так, что вам не нужно «title: ...» в первом вопросе сообщения? – huon

ответ

8

Вам не нужно изменять jekyll codebase для удаления названий. Это можно сделать, используя различные макеты с соответствующими фильтрами и тегами для жидкости.

Для отдельных почтовых страниц просто создайте новый файл макета (например, «_layouts/no-title-post.html»), который не содержит тег {{ page.title }}. В исходном файле _posts задайте переднюю задачу YAML, чтобы вызвать ее. Например:

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

Отметим здесь, что «название:» не требуется в передней материи YAML. Если jekyll нуждается в нем, значение будет автоматически упаковано из имени файла. Например, «_posts/2012-04-29-a-new-post.md» автоматически изменит свою переменную title на «A New Post». Если ваши шаблоны не вызывают теги заголовка, это не имеет значения. Вы можете включить «заголовок:» в передний вопрос, и он просто не будет отображаться.

Вы также можете отобразить страницу без заголовка на страницах вашего листинга/индекса. Проверьте раскладку сообщений, чтобы определить, должно ли отображаться заголовок. Например, чтобы показать заголовки на всех страницах кроме те, которые имеют макет «без титульного пост», вы могли бы сделать что-то вроде этого:

{% 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 %} 

В этом случае ссылка на саму страницу также удаляется. Если страница должна быть адресной, вам нужно будет добавить ссылку в другое место.

1

у меня был тот же сомнение, то я наткнулся на это на самом деле простое решение:

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

, а затем в самом почтовом файле вы бы оставить title переменной пустым:

--- 
layout: post 
title:  
--- 

Этот путь, h1 не будет печатать, если заголовок пуст. Я нашел этот метод особенно полезным для типов сообщений, таких как кавычки, которые большую часть времени не имеют названий.

2

решение edemundo «s больше не работает во всех случаях с Джекила 3.

Я использую пустое название по умолчанию:

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

Затем вы можете сравнить заголовки против пустой строки в верстку, например:

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

Если вы хотите автоматическую генерацию заголовка можно использовать в качестве frontmatter:

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

это очень хорошо работало с установкой jekyll/poole. – gvoysey