2012-10-01 12 views
13

Aracıda basit bir portföy sitesi bir araya getiriyorum. Yerel YAML verilerine dayanarak dinamik olarak 'çalışma' sayfalarını oluşturuyorum. Bu config.rb içinde:MIddleman 3.0'ı Kullanma - Dinamik sayfalarda tek tek sayfa başlıklarını nasıl ayarlayabilirim?

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

SEO amaçlar için, ben benzersiz bir sayfa başlık ve açıklama için bu dinamik olarak oluşturulan sayfaların her biri istiyoruz.

başlık anda bu

%title 
    = current_page.data.title 

gibi düzen dosyasında belirlenen ve ben bu

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

gibi CURRENT_PAGE değişkenleri ayarlamak için frontmatter kullanabilirsiniz biliyorum Ve ben project_template içine yapışabilir olduğu

.haml, ama çalışmak için böyle bir şey elde etmek için herhangi bir yolu var mı?

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

cevap

21

yerine (yapıyorsun gibi) frontmatter başlığı belirlemek yerine content_for kullanabilirsiniz.

E.g. düzeninde:

%title= yield_content(:title)

Ve dinamik sayfanın şablonda

:

- content_for(:title, @project.title)

+0

Teşekkürler! content_for yaklaşımı çalışır, sadece düzen içinde verim_content (: başlık) –

+0

teşekkürler, 'verim_için' kullanmak için cevabı güncelledi – ghempton

2

O sınırlamasını aşmak için başka bir yol buldum.

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

Bu current_page.data yoluyla veri alma gibi hoş, kısa değil, ama sadece meta verileri değiştirme başardınız: Yerine sayfa verileri için gitmeyi, meta verilerinden frontmatter veri almak

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

emin değilim neden ama eğer hatırlıyorum doğru ben de hazır üzerinde sonradan meta kaynak ayarlamak zorunda:

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

hala/daha iyi bir sol olması gerektiğini umut düşünüyorum Katkı. Vekil sayfalar için ön veri verilerini ayarlayamayacağımıza dair oldukça garip.

6

İşte en basit, modüler çözüm. senin düzende

, atmak:

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

When @ BAŞLıK geçerli sayfaya sunulacak bir yakut örnek değişkendir.

geçerli sayfasında, (tire unutma) atmak:

- @title = 'Your Page Title' 

Sonra gitmek için iyi olmalı!

İlgili konular