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