| Class | SeoToolbox |
| In: |
lib/seo_toolbox.rb
|
| Parent: | Object |
Klasse mit Tools für die Suchmaschinenoptimierung.
| NOTE: | Die Datei sitemap_data.dat ist nach dem folgenden Schema aufgebaut: |
| INFO: | Achten Sie darauf, dass zumindest die sitemap_data.dat in einem Verzeichnis liegt, dass bei dem deployment nicht überschrieben wird.</b> |
| VERSION | = | "0.9.1" |
| changefreq | [R] | |
| path_to_data | [R] | |
| path_to_sitemap | [R] | |
| priority | [R] | |
| url | [R] |
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’}
# 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:
Der Typische Wert der priority ist 0.5 und kann zwischen 0.0 und 1.0 liegen.
# 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
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:
# 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
# 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
# File lib/seo_toolbox.rb, line 92
92: def remove_url_from_sitemap? url
93: begin
94: url = url.gsub("&", "&").gsub("'", "'").gsub("\"", """).gsub(">", ">").gsub("<", "<")
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"
# 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("&", "&").gsub("'", "'").gsub("\"", """).gsub(">", ">").gsub("<", "<")
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
# 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
Erstellt die URL-Elemente.
# 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