में स्थिर शीर्षलेख सूची उत्पन्न करने के लिए नोकोगिरी का उपयोग करना मैं मध्यस्थ और रूबी के साथ अनुभवहीन हूं, लेकिन मैं Slate काम करने की कोशिश कर रहा हूं, इसलिए यह ग्राहक पक्ष की बजाय निर्माण समय के दौरान एक साइड नेविगेशन/हेडर की सूची उत्पन्न करता है जावास्क्रिप्ट का उपयोग कर। जिस समस्या में मैं दौड़ रहा हूं वह हेडर्स को आंशिक से शामिल करने के लिए कोड प्राप्त कर रहा है।स्लेट/मिडलमैन
निर्देशिका संरचना का एक उदाहरण:
Source
+--config.rb
+--includes
+--file.md
+--otherfile.md
+--index.html
+--layouts
+--layout.erb
इस के लिए Config.rb टुकड़ा: इस के लिए
require 'nokogiri'
helpers do
def toc_data(page_content)
html_doc = Nokogiri::HTML::DocumentFragment.parse(page_content)
# get a flat list of headers
headers = []
html_doc.css('h1, h2, h3').each do |header|
headers.push({
id: header.attribute('id').to_s,
content: header.content,
level: header.name[1].to_i,
children: []
})
end
[3,2].each do |header_level|
header_to_nest = nil
headers = headers.reject do |header|
if header[:level] == header_level
header_to_nest[:children].push header if header_to_nest
true
else
header_to_nest = header if header[:level] == (header_level - 1)
false
end
end
end
headers
end
end
लेआउट टुकड़ा:
<ul id="toc" class="toc">
<% toc_data(page_content).each do |h1| %>
<li>
<a href="#<%= h1[:id] %>" class="toc-h1"><%= h1[:content] %></a>
<ul class="toc-section">
<% h1[:children].each do |h2| %>
<li>
<a href="#<%= h2[:id] %>" class="toc-h2"><%= h2[:content] %></a>
<ul class="toc-submenu">
<% h2[:children].each do |h3| %>
<li>
<a href="#<%= h3[:id] %>" class="toc-h3"><%= h3[:content] %></a>
</li>
<% end %>
</ul>
</li>
<% end %>
</ul>
</li>
<% end %>
</ul>
...
<div class="page-wrapper">
<div class="content">
<%= page_content %>
<% current_page.data.includes && current_page.data.includes.each do |include| %>
<%= partial "includes/#{include}" %>
<% end %>
</div>
</div>
वर्तमान में, index.html फ़ाइल के केवल शीर्षलेख आबादी प्राप्त कर रहे हैं और शामिल आंशिक से कुछ भी नहीं। मेरा मानना है कि मुझे ready
सहायक का उपयोग करके similar to what is described in the Middleman docs for sitemaps पोस्ट बिल्ड होने के लिए मौजूदा सहायक की आवश्यकता हो सकती है। मेरा मानना है कि मुझे कॉन्फ़िगरेशन कोड में एक और परिवर्तन करना है ताकि यह page_content
के बाहर अतिरिक्त सामग्री को कैप्चर कर सके, लेकिन मुझे यकीन नहीं है कि परिचितता की कमी के कारण क्या है। कोई भी संकेतक प्रशंसनीय होंगे।
संपादित करें: मध्यस्थ मूलभूत दस्तावेज़ों को देखने के बाद, पैड्रिनो ढांचे से दो सहायक होते हैं जो मैं उपयोग कर सकता हूं: capture_html
और concat_content
। मैं यह जानने की कोशिश कर रहा हूं कि सहायक page_content
को मेरे द्वारा किए जा रहे विशिष्ट परिवर्तनों के लिए अतिरिक्त संदर्भ प्राप्त करने के लिए परिभाषित किया गया है।
ऐसा लगता है कि मुझे उस त्रुटि के आधार पर इसे मध्यस्थ के लिए परिभाषित करने के लिए इसके साथ खेलना पड़ सकता है। कोशिश करने के लिए मुझे कुछ देने के लिए धन्यवाद! मैं के साथ खेल रखेंगे इस '' 'NameError: अपरिभाषित स्थानीय चर या विधि # के लिए' full_content '<# <वर्ग: 0x007fdd621f2650>: 0x007fdd61e97190> \t लेआउट/apitwocolumn.erb: 92: 'सिंगलटन वर्ग में ब्लॉक में ' \t लेआउट/apitwocolumn.erb: -7: 'instance_eval में' \t लेआउट/apitwocolumn.erb: -7: -9:' सिंगलटन वर्ग ' \t लेआउट/apitwocolumn.erb में '__tilt_70294461913540'''' में – Alyss
यह वास्तव में अंत समाधान वास्तव में बंद था! काश मैं कोड पर थोड़ी देर काम किया था। – Alyss