2016-04-29 8 views
2

Ich habe Probleme mit einigen verschachtelten Flüssigkeit Tags zu kompilieren, wenn der äußere Tag enthält mehrere Geschwister-Flüssigkeits-Tags. Dies funktioniert:Verschachtelte flüssige benutzerdefinierte Tag Blöcke

{% container %} 
    {% inner %} 
    Stuff Goes in here 
    {% endinner %} 
{% endcontainer %} 

aber nicht

{% container %} 
    {% inner %} 
    Stuff Goes in here 
    {% endinner %} 
    {% inner %} 
    Stuff Goes in here 
    {% endinner %} 
{% endcontainer %} 

bekomme ich folgende Fehlermeldung:

Liquid Exception: Liquid syntax error (line 1): 'container' tag was never closed in /.../_posts/blah.markdown/#excerpt 
Liquid Exception: Liquid syntax error (line 1): 'container' tag was never closed in _includes/head.html, included in _layouts/default.html 

Beachten Sie, dass #excerpt im ersten Fehler? Wenn ich einen Auszug in die Front male. Alles funktioniert gut. Mein head.html umfassen wird standardmäßig mit einer neuen jekyll Website:

<meta name="description" content="{% if page.excerpt %}{{ page.excerpt | strip_html | strip_newlines | truncate: 160 }}{% else %}{{ site.description }}{% endif %}"> 

die if-Anweisung im Kopf entfernt wird, wird der Fehler weg gehen machen. Ich bin völlig verwirrt darüber, warum mehrere Geschwister diesen Fehler verursachen würden. Hier ist mein vereinfachte Plugin-Code:

module Jekyll 
    class RenderContainer < Liquid::Block 

    def initialize(tag_name, contain, tokens) 
     super 
    end 

    def render(context) 
     "<div class=\"container\">#{super}</div>" 
    end 
    end 

    class RenderInner < Liquid::Block 
    def initialize(tag_name, contain, tokens) 
     super 
    end 

    def render(context) 
     "<div class=\"inner\">#{super}</div>" 
    end 
    end 
end 

Liquid::Template.register_tag('container', Jekyll::RenderContainer) 
Liquid::Template.register_tag('inner', Jekyll::RenderInner) 

Antwort

0

Ich lief in das gleiche Problem und anscheinend ist dies ein known bug. Ich habe versucht das Plugin und die Flüssigkeit Tag, das Sie nicht oben bekommen arbeiten:

{% container %} 
    {% inner %} 
    Stuff Goes in here 
    {% endinner %} 
    {% inner %} 
    Stuff Goes in here 
    {% endinner %} 
{% endcontainer %} 

... und sobald ich die empfohlene Update hinzugefügt (siehe unten) zu meinem config.yml, der Code arbeitete danach.

Bitte beachten Sie, dass Jekyll Serve neu gestartet werden muss, nachdem dieses Bit zur Konfigurationsdatei hinzugefügt wurde.

+1

Schön! Danke, dass du eine fast einjährige Frage beantwortet hast! – jhummel

Verwandte Themen