2012-11-25 6 views
7

Ich habe eine jekyll Seite mit Dateistruktur wie folgt:Wie man eine HTML-Datei in eine Markdown-Datei in Jekyll einbinden?

▾ _includes/ 
    post-entry.html 
▾ _posts/ 
    2012-11-25-first-post.markdown 
index.markdown 

In meinem index.markdown, ich möchte eine post-entry.html wie diese sind:

{% for post in site.posts %} 
* {% include post-entry.html %} 
{% endfor %} 

Aber das erscheint als Schnipsel HTML-Code in der Blog. Wie kann ich verhindern, dass der HTML-Code geschützt ist?

Antwort

12

Sie können flüssige Etiketten in jeder Markdown-Datei verwenden, solange sie einen YAML-Header haben. Schauen Sie sich zum Beispiel die index.md in der jekyllbootstrap template for Jekyll sites gegeben.

Wenn Sie auf Ihre tatsächliche index.markdown oder Ihr Repository selbst verweisen (z. B. wenn es auf Github ist), könnten wir wahrscheinlich eine bessere Vorstellung davon bekommen, was falsch gelaufen ist. Ihr Beispiel sollte funktionieren, obwohl Sie möglicherweise das HTML-Listenelement <li> anstelle des Markdowns * verwenden müssen.

+0

In der Datei musste ich den Code tatsächlich einfügen, wie ich oben erwähnt habe, aber ich habe es so gemacht, wie es jetzt ist. PS: Nicht die Geschichte sehen, es ist eigentlich die Geschichte eines anderen Repository. Muss eine 'Rebase' oder so etwas machen. – SiddharthaRT

+0

Cool, es klingt also, als würde alles mit dem Liquid-Code in der 'index.markdown'-Datei arbeiten, wie Sie es sich jetzt vorgestellt haben, ja? – cboettig

+0

Nein. Jetzt mache ich die Methode, die am Ende Ihres Links erwähnt wird: [so] (git: //gist.github.com/4174354.git). Wenn ich es als '{% include post.html%}' einfüge, bekomme ich eine Ausgabe wie [so] (http://imgur.com/FooDo). – SiddharthaRT

-7

Sie können nicht. Markdown-Dateien sind nur Textdateien mit Styling. Wenn Sie die Liquid-Tags verwenden möchten, müssen Sie dies in Ihren _layouts tun.

Wenn ich rate, wollen Sie diese Markdown-Datei auf Ihrer Indexseite? Im Layout default.html nach den Tags {{content}} können Sie dann die liquid-Tags verwenden, die Sie verwenden möchten. Es besteht keine Notwendigkeit, die Markdown-Dateien mit Code zu mischen.

+0

Ich war auf dem Sitzsack entspannen und starrte an die Decke, wenn es mich getroffen. Vielen Dank. – SiddharthaRT

+7

Es tut mir leid, aber diese Antwort ist einfach falsch. Sie können tatsächlich Flüssigkeit in einer index.markdown-Datei verwenden, wie ich in meiner Antwort darauf hinweise. – cboettig

0

Verwenden Sie stattdessen {{ post.content }}.

Hier ist der Code, den ich als Beispiel auf meiner Website verwenden:

{% for post in site.posts %} 
    <a href="{{ post.url }}"> 
     <h2>{{ post.title }} &mdash; {{ post.date | date_to_string }}</h2> 
    </a> 
    {{ post.content }} 
{% endfor %} 
3

Das Problem ist der Parser den HTML-Code als Code-Blöcke betrachtet. Der beste Weg, um Code zu deaktivieren wäre Blöcke wie ich asked in this question

um zu umgehen verwenden Sie den Tag ersetzen:

{% capture includeGuts %} 
{% include post-entry.html %} 
{% endcapture %} 
{{ includeGuts | replace: ' ', ''}} 
Verwandte Themen