2011-09-20 9 views
6

मेरे पास एक जैकिल (तरल) ब्लॉक प्लगइन है और मैं यह जानना चाहता हूं कि वर्तमान पृष्ठ क्या है। मैं देखता हूं कि एक संदर्भ प्रस्तुत करने में पारित किया गया है, और मैं वर्तमान साइट ऑब्जेक्ट को context.registers [: site] के रूप में पुनर्प्राप्त कर सकता हूं। हालांकि, वर्तमान पृष्ठ को context.registers के रूप में प्राप्त करने का प्रयास [: पृष्ठ] विफल।मैं जेकिल टैग प्लगइन में वर्तमान पृष्ठ का पता कैसे लगा सकता हूं?

जिस समस्या को मैं हल करने का प्रयास कर रहा हूं वह यह जानने के लिए एक सरल ब्लॉक प्लगइन बनाना है कि वर्तमान पृष्ठ टैग में उल्लिखित पृष्ठ है या इसे हाइलाइट करें।

किसी भी सुझाव की सराहना की जाएगी।

धन्यवाद!

उत्तर

15

बाहर कर देता है हम भी इस तरह कर सकते हैं:

def render(context) 
    page_url = context.environments.first["page"]["url"] 

कौन सा स्पष्ट नहीं है, लेकिन यह कोड पैचिंग आवश्यकता नहीं है।

+0

कि बढ़िया है के साथ प्राप्त किया जा सकता है शामिल है, के अधिकांश के साथ एक हैश वापस जाने के लिए लगता है। और पूरी तरह से अंतर्ज्ञानी। इसे समझने के लिए धन्यवाद। – cboettig

+2

लेकिन क्या होगा यदि आपको 'प्रारंभिक' पर 'संदर्भ' ऑब्जेक्ट को पकड़ने की आवश्यकता है? – jackyalcine

1

मुझे नहीं लगता कि जैकिल के साथ ऐसा करने का एक अच्छा तरीका है। convertible.rb केवल site ऑब्जेक्ट को तरल में पास करता है, जिसमें कोई पृष्ठ-विशिष्ट डेटा नहीं होता है।

मैं आपको आवश्यक डेटा में पास करने के लिए केवल convertible.rb संपादित करने का सुझाव देना चाहता हूं, मुख्य परिवर्तन के लिए मुख्य प्रोजेक्ट को पुल अनुरोध सबमिट करना और अपनी साइट को उत्पन्न करने के लिए स्थानीय रूप से अपने फोर्क का उपयोग करना चाहता हूं। खुले स्रोत के लिए हुरेय!

निम्नलिखित तुच्छ पैच Jekyll 0.11.0 के खिलाफ स्थानीय स्तर पर मेरे लिए काम करता है, के रूप context.registers[:page] एक पेज हैश तरल में उपलब्ध करा कर (ध्यान दें: यह context.registers[:page].url इस बिंदु पर एक पूर्व परिवर्तित हैश है, ताकि आप context.registers[:page]['url'] का उपयोग करना चाहते हैं, नहीं) :

diff --git a/lib/jekyll/convertible.rb b/lib/jekyll/convertible.rb 
index d33abc5..a674ef5 100644 
--- a/lib/jekyll/convertible.rb 
+++ b/lib/jekyll/convertible.rb 
@@ -69,7 +69,7 @@ module Jekyll 
    # 
    # Returns nothing. 
    def do_layout(payload, layouts) 
-  info = { :filters => [Jekyll::Filters], :registers => { :site => self.site } } 
+  info = { :filters => [Jekyll::Filters], :registers => { :site => self.site, :page => payload['page'] } } 

     # render and transform content (this becomes the final content of the object) 
     payload["pygments_prefix"] = converter.pygments_prefix 

आशा है कि मदद करता है!

2

context['page'] वर्तमान पृष्ठ के गुण, url और path

तो वास्तविक पेज वस्तु

context.registers[:site].pages.detect { |p| p.path==context['page']['path'] } 
संबंधित मुद्दे