add seo_metadata liquid tag (Mario)
This commit is contained in:
parent
3e5e5d5ba9
commit
083debc516
23
lib/locomotive/liquid/tags/seo_metadata.rb
Normal file
23
lib/locomotive/liquid/tags/seo_metadata.rb
Normal file
@ -0,0 +1,23 @@
|
||||
module Locomotive
|
||||
module Liquid
|
||||
module Tags
|
||||
class SEOMetadata < ::Liquid::Tag
|
||||
|
||||
def render(context)
|
||||
%{
|
||||
<meta name="description" content="#{sanitized_string(context.registers[:site].meta_description)}" />
|
||||
<meta name="keywords" content="#{sanitized_string(context.registers[:site].meta_keywords)}" />
|
||||
}
|
||||
end
|
||||
|
||||
# Removees whitespace and quote charactets from the input
|
||||
def sanitized_string(string)
|
||||
string.strip.gsub(/"/, '')
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
::Liquid::Template.register_tag('seo_metadata', SEOMetadata)
|
||||
end
|
||||
end
|
||||
end
|
37
spec/lib/locomotive/liquid/tags/seo_metadata_spec.rb
Normal file
37
spec/lib/locomotive/liquid/tags/seo_metadata_spec.rb
Normal file
@ -0,0 +1,37 @@
|
||||
require 'spec_helper'
|
||||
|
||||
describe Locomotive::Liquid::Tags::SEOMetadata do
|
||||
|
||||
before :each do
|
||||
@site = Factory.build(:site, :meta_description => 'A short site description', :meta_keywords => 'test only cat dog')
|
||||
end
|
||||
|
||||
context '#rendering' do
|
||||
|
||||
it 'renders a a meta description tag' do
|
||||
render_seo_metadata.should include '<meta name="description" content="A short site description" />'
|
||||
end
|
||||
|
||||
it 'strips and removes quote characters from the description' do
|
||||
@site.meta_description = ' String with " " quotes '
|
||||
render_seo_metadata.should include '<meta name="description" content="String with quotes" />'
|
||||
end
|
||||
|
||||
it 'renders a meta keywords tag' do
|
||||
render_seo_metadata.should include '<meta name="keywords" content="test only cat dog" />'
|
||||
end
|
||||
|
||||
it 'strips and removes quote characters from the keywords' do
|
||||
@site.meta_keywords = ' one " two " three '
|
||||
render_seo_metadata.should include '<meta name="keywords" content="one two three" />'
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
def render_seo_metadata
|
||||
registers = { :site => @site }
|
||||
liquid_context = ::Liquid::Context.new({}, {}, registers)
|
||||
output = Liquid::Template.parse("{% seo_metadata %}").render(liquid_context)
|
||||
end
|
||||
|
||||
end
|
Loading…
Reference in New Issue
Block a user