2013-01-01 25 views
22

मैं जेकिल के लेआउट में कुछ बदलाव करना चाहता हूं। परिवर्तन छोटे और अलग हैं। उदाहरण के लिए, एक अतिरिक्त सीएसएस या जावास्क्रिप्ट फ़ाइल को जोड़ना। या हेडर में कुछ जानकारी जोड़ना। या पृष्ठ शीर्षक ट्यूनिंग। महत्वपूर्ण कि ये परिवर्तन किसी पृष्ठ/पोस्ट पर निर्भर करते हैं।जेकिल में किसी विशेष पृष्ठ/पोस्ट के लिए लेआउट कैसे ट्यून करें?

चूंकि परिवर्तन छोटे और विविध हैं, इसलिए उनमें से प्रत्येक के लिए एक विशेष लेआउट बनाना बहुत महंगा लगता है।

मैंने अपना स्वयं का समाधान बनाने की कोशिश की लेकिन impossibility to use variables in including instructions में चलाया।

क्या किसी ने कुछ ऐसा हल किया है? उदाहरण के लिए, एक विशेष सीएसएस को एक विशेष पोस्ट से जोड़ना?

+0

बीटीडब्ल्यू, [1.3.0] (http://jekyllrb.com/docs/history/#130__20131104) जेकिल के संस्करण तक अब इसमें चर का उपयोग करना संभव है - '{% शामिल {{variable}}% } ':) – kizu

उत्तर

36

आप किसी भी पोस्ट/पेज के लिए इच्छित कुछ भी ट्यून करने के लिए YAML front matter का उपयोग कर सकते हैं। आपके द्वारा प्रदान की जाने वाली कोई भी जानकारी लेआउट के माध्यम से सुलभ होगी और इसमें page वैरिएबल या उनमें से किसी भी सूची में विशिष्ट पोस्ट के तहत शामिल होगा।

यह आपके मामले के लिए एक समाधान की तरह लगता है: आप इस तरह YAML सामने बात इस्तेमाल कर सकते हैं:

--- 
extra_css: 
    - foo.css 
    - dir/bar.css 
    - /s/baz.css 
--- 

और फिर इस तरह अपने लेआउट के शीर्षक में इस का उपयोग करें:

{% for css_name in page.extra_css %} 
    <link rel="stylesheet" href="{{ css_name }}"> 
{% endfor %} 

इस तरह के रास्ते में आप YAML फ्रंट मामले में किसी पोस्ट के साथ प्रदान किए जाने वाले डेटा के आधार पर कोई भी तर्क जोड़ सकते हैं।

आप सार करना चाहते हैं तो मॉड्यूल के लिए उन तर्क से कुछ, आप एक हैक उपयोग कर सकते हैं शामिल हैं चारों ओर, एक चर असाइन करने से पहले कि शामिल है और फिर इसे का उपयोग कर के अंदर। Here is a link विवरण के साथ यह जेकिल बूटस्ट्रैप प्रोजेक्ट में कैसे बनाया गया है (बीटीडब्ल्यू, इसके लिए साइट पर जैकिल पर बहुत अच्छी जानकारी है)।

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


एक अन्य समाधान सब कुछ विभाजित लेआउट शामिल करने के लिए, और जटिलता के विभिन्न स्तरों के साथ लेआउट बनाने के लिए है - किसी भी ब्लॉक के शामिल के साथ इस तरह से आप इस पद के लिए उन बुनियादी लेआउट के किसी भी सेट कर सकते हैं और फिर किसी भी अतिरिक्त कोड लिखने

--- 
layout: custom 
--- 
<aside class="sidebar"> 
    {% include comments.html %} 
    {% include sidebar.html %} 
</aside> 
<div class="content" role="main"> 
    Foo bar baz 
</div> 

वहाँ आप उस पृष्ठ के लिए एक बुनियादी लेआउट शामिल नहीं हैं और साइडबार और टिप्पणियों को शामिल नहीं करते एक कस्टम लेआउट इस्तेमाल कर सकते हैं: तो आप पोस्ट ऐसा दिखाई दे सकता आप, बुनियादी लेआउट से की आवश्यकता होगी , तो आप यह तय कर सकते हैं कि आप किस स्तर का लेआउट चाहते हैं और फिर फिर से परिभाषित करने के लिए आवश्यक कुछ भी फिर से परिभाषित करें।

इसके अलावा, आप तो आप सिर से इस तरह के चर कह सकते हैं अलग-अलग स्थानों tweak लेकिन एक अज्ञात सामग्री के साथ, आप ब्लॉक के साथ YAML सामने बात इस्तेमाल कर सकते हैं, जैसे

extra_head: | 
    <style> 
    * {background: red} 
    </style> 

करने की आवश्यकता होगी यदि: {{ page.extra_head }} और मिल आपके द्वारा रखी गई कोई भी सामग्री। हालांकि, अगर आप YAML अंदर किसी भी तरल टैग का उपयोग नहीं कर सकते, लेकिन आप तो ऐसे चर पर किसी भी YAML टैग इस्तेमाल कर सकते हैं, ताकि आप उन्हें markdownify या किसी तार सरल की जगह फिल्टर द्वारा कुछ और के साथ अंदर बदल सकते थे।

और यदि आप में से कुछ भी फिट नहीं है, तो जैकिल आपको फिट नहीं करेगा - जैसा कि मैंने एक टिप्पणी में लिखा था, जैकिल सिर्फ एक ब्लॉग इंजन है और आपको एक्सएसएलटी के रूप में जटिल होने की प्रतीक्षा नहीं करनी चाहिए।

+0

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

+2

वैसे, आपकी आवश्यकता तब जैकिल के दायरे से बाहर है, अगर आप भविष्यवाणी नहीं कर सकते कि कौन से स्थान बदलना चाहते हैं या नई पोस्ट के लिए लेआउट में आवश्यक तर्क जोड़ नहीं सकते हैं, तो जेकिल आपको फिट नहीं करेगा - यह सिर्फ एक सुविधाजनक स्थिर ब्लॉग है इंजन जिसे _a bit_ का विस्तार किया जा सकता है। और आपको एक जटिल विन्यास योग्य समाधान की आवश्यकता है। हालांकि, मुझे संदेह है कि ऐसा कोई भी होगा जो जैकिल ब्लॉगिंग के लिए उतना ही अच्छा होगा जितना अच्छा होगा। इसलिए, यदि आपको दोनों की आवश्यकता है, तो मैं अकेले पोस्ट को ट्यून करके लेआउट ट्यूनिंग के बारे में भूलने की सलाह दूंगा और जब भी आपको कुछ अलग चाहिए तो लेआउट में उचित परिवर्तन करें। – kizu

+0

इनलाइन जेएस या सीएसएस से निपटने का एक तरीका है? – JCarlos

0

मैंने कभी भी jekyll-bootstrap स्थिर साइट में एक स्वतंत्र पृष्ठ बनाने का प्रयास किया है। उदाहरण के लिए my_cv.html जिसे स्वतंत्र सीएसएस शैली की आवश्यकता है। Gh-pages (माफ करना गिटहब) के साथ एक नया जिथब रिपोजिटरी बनाने के बजाय, मैं बस my_cv.md पर पोस्ट की सभी अंतिम HTML सामग्री को भरता हूं क्योंकि markdown प्रारूप वास्तव में html के साथ संगत है, और सौभाग्य से यह काम करता है।