Class SeoToolbox
In: lib/seo_toolbox.rb
Parent: Object

@author: Philipp Petersen

@date: 04.06.2009

@license: MIT

Klasse mit Tools für die Suchmaschinenoptimierung.

NOTE:Die Datei sitemap_data.dat ist nach dem folgenden Schema aufgebaut:
  • URL:::lastmod:::changefreq:::priority
INFO:Achten Sie darauf, dass zumindest die sitemap_data.dat in einem Verzeichnis liegt, dass bei dem deployment nicht überschrieben wird.</b>

Methods

Constants

VERSION = "0.9.1"

Attributes

changefreq  [R] 
path_to_data  [R] 
path_to_sitemap  [R] 
priority  [R] 
url  [R] 

Public Class methods

Retuniert alle für die OnPage-Optimierung relevanten Metatags. So können diese leicht in eine Rails-App eingefügt werden. options = {:keywords => ‘String’, :description => ‘String’, :author => ‘String’, :language => ‘String’, :robots => ‘String’}

[Source]

    # File lib/seo_toolbox.rb, line 44
44:   def self.include_metatags options={}
45:     meta_str = ""
46:     options.each_pair { |key, value|
47:       meta_str << "<meta name=\"#{key}\" content=\"#{value}\" />\n"
48:     }
49:     meta_str << "<!--This site use the seo_toolbox gem from Philipp Petersen-->"
50:   end

Mögliche Werte für changefreq:

  • always
  • hourly
  • daily
  • weekly
  • monthly
  • yearly
  • never

Der Typische Wert der priority ist 0.5 und kann zwischen 0.0 und 1.0 liegen.

[Source]

    # File lib/seo_toolbox.rb, line 24
24:   def initialize path_to_sitemap, path_to_data, url, changefreq='weekly', priority='1.0'
25:     @url = url
26:     @path_to_sitemap = path_to_sitemap
27:     @changefreq = changefreq
28:     @priority = priority
29:     @path_to_data = path_to_data
30: 
31:     #Prüfe ob das Temp-File bereits existiert:
32:     if not File.exists?("#{path_to_data}/sitemap_data.dat")      
33:       save_new_url_to_sitemap?(@url, DateTime.now.strftime("%Y-%m-%d"), changefreq, priority)
34:     else
35:       #prüfe ob die Sitemap existiert. Existiert diese nicht, lege sie neu an:
36:       if not File.exists?("#{path_to_sitemap}/sitemap.xml")
37:         create_xml_sitemap?
38:       end
39:     end
40:   end

Public Instance methods

Erstellt die Datei robots.txt in gewählten Verzeichnis

Die URL zur sitemap wird automatisch eingefügt. Wird kein Inhalt für content angegeben, werden die Default-Werte eingesetzt:

  • User-Agent: *
  • Allow: /

[Source]

     # File lib/seo_toolbox.rb, line 144
144:   def create_robots_txt? content, path_to_robots_txt=@path_to_sitemap
145:     begin
146:       file = File.open("#{path_to_robots_txt}/robots.txt", "w")
147:       if content.nil?
148:         file << "User-Agent: *\nAllow: /\n"
149:       else
150:         file << content
151:       end
152:       file << "Sitemap:#{@url}/sitemap.xml"
153:       file.close
154:       return true
155:     rescue
156:       return false
157:     end
158:   end

[Source]

     # File lib/seo_toolbox.rb, line 120
120:   def create_xml_sitemap?
121:     if @url.empty? || @path_to_sitemap.empty?      
122:       return false
123:     else
124:       file = File.open("#{@path_to_sitemap}/sitemap.xml", "w")
125:       file << get_xml_head
126: 
127:       #Lese Daten ein:
128:       data_file = File.new("#{@path_to_data}/sitemap_data.dat")
129:       data_file.each_line{|line|        
130:         file << get_xml_url_element(line)
131:       }
132:       file << get_xml_url_bottom
133:       data_file.close
134:       file.close
135:       return true
136:     end
137:   end

Löscht eine bestehende URL aus der Sitemap

[Source]

     # File lib/seo_toolbox.rb, line 92
 92:   def remove_url_from_sitemap? url
 93:     begin
 94:       url = url.gsub("&", "&amp;").gsub("'", "&apos;").gsub("\"", "&quot;").gsub(">", "&gt;").gsub("<", "&lt;")
 95: 
 96:       file_content = []
 97:       file = File.open("#{@path_to_data}/sitemap_data.dat")
 98:       file.each_line{ |line|
 99:           file_content.push(line)
100:       }
101:       file.close
102: 
103:       file_content.each_index do |i|
104:         if file_content[i].match(/^#{url}/)          
105:           file_content.delete_at(i)
106:         end
107:       end
108: 
109:       #schreibe wieder in das file zurück
110:       file = File.open("#{@path_to_data}/sitemap_data.dat", "w")
111:       file_content.each { |item| file << item }
112:       file.close
113: 
114:       return true
115:     rescue
116:       return false
117:     end
118:   end

Speichert eine neue URL in der Sitemap.lastmod="2009-01-31"

[Source]

    # File lib/seo_toolbox.rb, line 53
53:   def save_new_url_to_sitemap? url, lastmod, changefreq=@changefreq, priority=@priority    
54:     begin      
55:       #Encoding:
56:       url = url.gsub("&", "&amp;").gsub("'", "&apos;").gsub("\"", "&quot;").gsub(">", "&gt;").gsub("<", "&lt;")
57: 
58:       #Prüfe ab, ob der Eintrag schon vorhanden ist:
59:       if File.exists?("#{@path_to_data}/sitemap_data.dat")
60:         #Speichere die Datei in einem Array
61:         file_content = []
62:         file = File.open("#{@path_to_data}/sitemap_data.dat")
63:         
64:         file.each_line{ |line|
65:           file_content.push(line)
66:         }
67:         file.close
68:         
69:         file_content.each_index do |i|
70:           if file_content[i].match(/^#{url}/)
71:             file_content.delete_at(i)
72:           end
73:         end
74:         file_content.push "#{url}:::#{lastmod}:::#{changefreq}:::#{priority}\n"
75: 
76:         #schreibe wieder in das file zurück
77:         file = File.open("#{@path_to_data}/sitemap_data.dat", "w")
78:         file_content.each { |item| file << item }
79:         file.close
80:       else        
81:         file = File.open("#{@path_to_data}/sitemap_data.dat", "w")
82:         file << "#{url}:::#{lastmod}:::#{changefreq}:::#{priority}\n"
83:         file.close
84:       end
85:       return true
86:     rescue
87:       return false
88:     end
89:   end

Private Instance methods

[Source]

     # File lib/seo_toolbox.rb, line 161
161:   def get_xml_head
162:     date = DateTime.now.strftime("%Y-%m-%d %H:%M")
163:     str ="<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- generator=\"seo_toolbox/\#{VERSION}\" -->\n<!-- sitemap-generator-url=\"http://blog.media-scientific.com/seo_toolbox\" sitemap-generator-version=\"\#{VERSION}\" -->\n<!-- generated-on=\"\#{date}\" --><\n<urlset xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.sitemaps.org/schemas/sitemap/0.9\" url=\"http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd\" xmlns=\"http://www.sitemaps.org/schemas/sitemap/0.9\">\n"
164:   end

[Source]

     # File lib/seo_toolbox.rb, line 188
188:   def get_xml_url_bottom    
189:     "</urlset>"
190:   end

Erstellt die URL-Elemente.

  • line = "URL:::lastmod:::changefreq:::priority"

[Source]

     # File lib/seo_toolbox.rb, line 175
175:   def get_xml_url_element line
176:     elements = line.split(":::")
177:     str ="    <url>\n      <loc>\#{elements[0]}</loc>\n      <lastmod>\#{elements[1]}</lastmod>\n      <changefreq>\#{elements[2]}</changefreq>\n      <priority>\#{elements[3].strip}</priority>\n   </url>\n"
178:   end

[Validate]