2013-07-19 5 views
16

मैं अपने ब्लॉग के लिए गिटहब पेज का उपयोग करता हूं, और जेकिल के साथ एक समस्या में भाग रहा हूं। मेरे post.html में इस तरह का एक ब्लॉक है:जेकिल में रिक्त रेखा को कैसे दबाया जाए?

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

मध्य में हिस्सा कोई फर्क नहीं पड़ता। महत्वपूर्ण हिस्सा लाइन का अंत है जो {% %} मार्कअप के बाहर है, और इसलिए इसे HTML में प्रस्तुत किया जाता है। चूंकि यह एक लूप में है, यह HTML पृष्ठ के बीच में लगभग 1000 रिक्त रेखाएं डाल रहा है। यह प्रदर्शन को प्रभावित नहीं करता है, लेकिन यह एक दृश्य/स्रोत परेशानी बना देता है।

उन अतिरिक्त रिक्त रेखाओं से बचने के तरीके पर कोई विचार?

उत्तर

5

Liquid v4 के बाद से (से Jekyll में शामिल v3.5) एक Whitespace control है, जिसने अंततः रिक्त रेखा, सफेद स्थान इत्यादि के साथ हल किया है

लिन के लिए प्रलेखन: https://shopify.github.io/liquid/basics/whitespace/

4

Jekyll plugin है जो व्हाइटस्पेस को स्ट्रिप्स करता है।

ऑकर द्वारा जैकिल प्लगइन्स: उदाहरण के लिए प्लगइन्स। अवांछित वज़न विशेषता द्वारा न्यूलाइन/व्हाइटस्पेस और सॉर्टिंग पृष्ठों को ट्रिम करना।

आप इसे सीधे अपने Github repository से प्राप्त कर सकते हैं। तो मूल रूप से आप अपना कोड {% strip %}{% endstrip %} से लपेटें। यहां तक ​​कि यदि यह आपकी आवश्यकताओं के अनुरूप नहीं है, तो आप आसानी से रूबी स्क्रिप्ट को बदल सकते हैं।

उदाहरण के लिए:

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

हालांकि, Jekyll प्लगइन्स की प्रकृति को याद रखें, आप उन्हें Github पेज सर्वर पर नहीं चल सकता। Jekyll Doccumentation से

उद्धरण:

GitHub पेज Jekyll के द्वारा संचालित है, लेकिन सभी पन्ने साइटों सुरक्षा कारणों के लिए कस्टम प्लग इन अक्षम करने के लिए --safe विकल्प का उपयोग उत्पन्न कर रहे हैं। दुर्भाग्यवश, इसका मतलब है कि यदि आप गिटहब पेज पर तैनात हैं तो आपके प्लगइन काम नहीं करेंगे।

आप अभी भी अपनी साइट प्रकाशित करने के लिए गिटहब पेज का उपयोग कर सकते हैं, लेकिन आपको स्थानीय रूप से साइट को कन्वर्ट करने और जेकिल स्रोत फ़ाइलों की बजाय जनरेट की गई स्थिर फ़ाइलों को अपने गिटहब रिपोजिटरी में धक्का देना होगा।

12

कि मैं https://github.com/plusjade/jekyll-bootstrap/blob/master/_includes/JB/setup में पता चला एक अच्छा वैकल्पिक हल नहीं है, है, और जो GitHub पृष्ठों साथ संगत है।

बस अपने लूप को कैप्चर स्टेटमेंट में संलग्न करें, और परिणामी var को शून्य दें।

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

* एनबी * - यह दृष्टिकोण केवल ** तरल ** पर लागू होता है। यदि आप ऐसा करते हैं, तो कैप्चर टैग के बीच उत्पन्न होने वाली कोई भी ** HTML ** सामग्री पूरी तरह से छोड़ी जाती है। –

+0

यह काफी चालाक है! बहुत बहुत धन्यवाद!! –

+0

मुझे समझ में नहीं आता कि यह कैसे काम करता है। क्या कोई समझा सकता है? –

7

के बारे में
{{ page.content | escape | strip_newlines }} 
+0

आप इसे 'header.html' जैसे किसी शामिल के साथ कैसे कर सकते हैं? –

+4

ने इसे समझाया: '{% कैप्चर हेडर%} {% में header.html%} {% endcapture%} {{header | strip_newlines}} ' –

2

असल में वहाँ इस समस्या को जो किसी भी प्लगइन के बिना काम करता है के लिए एक नया समाधान है कैसे।

एक जेकिल लेआउट जो HTML को संपीड़ित करता है।एक नज़र में:

  • अनावश्यक सफेद जगह हटा देता है;
  • वैकल्पिक अंत टैग हटा देता है;
  • वैकल्पिक प्रारंभ टैग हटा देता है;
  • टिप्पणियां हटा देता है;
  • <pre> के भीतर व्हाइटस्पेस को संरक्षित करता है;
  • गिटहब पेज संगत;
  • विकास वातावरण को अनदेखा करता है;
  • कॉन्फ़िगर करने योग्य प्रभावित तत्व;
  • प्रोफ़ाइल मोड;
  • स्वचालित रूप से परीक्षण किया गया।

http://jch.penibelst.de/

आप हैं - किसी कारण से - नहीं उपयोग करने के लिए इस यहाँ एक अच्छा लेख है, जो कुछ समाधान का वर्णन करता है चाहता हूँ: Compressing Liquid generated code - sylvain durand

संबंधित मुद्दे