2012-10-01 11 views
13

मैं मध्यस्थ में एक साधारण पोर्टफोलियो साइट एक साथ रख रहा हूं। मैं स्थानीय वाईएएमएल डेटा के आधार पर गतिशील रूप से 'कार्य' पृष्ठ उत्पन्न कर रहा हूं। यह config.rb में है:मिडलमैन 3.0 का उपयोग करना - मैं डायनामिक पृष्ठों पर अलग-अलग पेज शीर्षक कैसे सेट करूं?

data.work.projects.each do |project| 
    page "/work/#{project[0]}.html", :proxy => "project_template.html" do 
    @project = project 
    end 
end 

एसईओ प्रयोजनों के लिए, मैं इन गतिशील पृष्ठों में से हर एक चाहते हैं एक अद्वितीय पृष्ठ शीर्षक और विवरण है।

शीर्षक वर्तमान में इस

%title 
    = current_page.data.title 

तरह लेआउट फ़ाइल में सेट किया गया है और मुझे पता है कि मैं इस

--- 
title: "Recent Work - " 
--- 

तरह CURRENT_PAGE चर सेट करने के लिए frontmatter उपयोग कर सकते हैं और मैं छड़ी कर सकते हैं कि मेरे project_template में .haml, लेकिन इस तरह कुछ काम करने के लिए कोई रास्ता है?

--- 
title: "Recent Work - " + @project.title 
--- 

उत्तर

21

फ्रंटमेटर में शीर्षक स्थापित करने के बजाय (जैसे आप कर रहे हैं), तो आप content_for का उपयोग कर सकते हैं।

उदा। लेआउट में:

%title= yield_content(:title)

और गतिशील पेज के खाके में:

- content_for(:title, @project.title)

+0

धन्यवाद! content_for दृष्टिकोण काम करता है, बस लेआउट में यह yield_content (शीर्षक) –

+0

धन्यवाद, 'yield_content' का उपयोग करने के उत्तर को अपडेट किया गया – ghempton

2

मैं एक और तरीका है कि सीमा के आसपास काम करने के लिए मिल गया है। इसके बजाय पेज डेटा के लिए जा रहा है, मेटाडाटा से frontmatter डेटा प्राप्त:

%title = current_page.metadata[:page]['title'] 

यह रूप में अच्छा और current_page.data के माध्यम से डेटा प्राप्त करने के रूप में कम नहीं है, लेकिन मैं केवल मेटाडाटा को बदलने के लिए प्रबंधित किया है:

proxy newpath, oldpath, :page => { 'title' => newtitle } 

मुझे यकीन है कि नहीं कर रहा हूँ क्यों, लेकिन अगर मैं सही याद है कि मैं भी तैयार पर बाद में मेटाडाटा संसाधन स्थापित करने के लिए किया था:

resource.add_metadata :page => { 'title' => newtitle } 

मैं अभी भी/उम्मीद है कि वहाँ एक बेहतर सोल होना चाहिए लगता है संविधान। यह पूरी तरह से अजीब तरह है कि हम प्रॉक्सी पृष्ठों के लिए फ्रंटमेटर डेटा सेट नहीं कर सकते हैं।

6

यहां सबसे सरल, मॉड्यूलर समाधान है।

अपने लेआउट में, में फेंक:

%title= 'Your Site Title | ' + @title 

@title एक गहरे लाल रंग का उदाहरण चर कि वर्तमान पृष्ठ के लिए उपलब्ध हो जाएगा।

अपने वर्तमान पृष्ठ में, में फेंक (न पानी का छींटा भूल):

- @title = 'Your Page Title' 

तो फिर तुम जाने के लिए अच्छा होना चाहिए!

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