Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/taq/sitemapper
Creates a sitemap
https://github.com/taq/sitemapper
Last synced: 1 day ago
JSON representation
Creates a sitemap
- Host: GitHub
- URL: https://github.com/taq/sitemapper
- Owner: taq
- Created: 2012-01-27T18:27:15.000Z (almost 13 years ago)
- Default Branch: master
- Last Pushed: 2012-01-30T14:09:00.000Z (almost 13 years ago)
- Last Synced: 2024-10-31T13:18:52.088Z (14 days ago)
- Language: Ruby
- Homepage:
- Size: 109 KB
- Stars: 2
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README
Awesome Lists containing this project
README
This is a simple class to write a website sitemap file.
You can use it on two ways:As a class
You can create a class and tell it to write the sitemap file when needed,
sending it a collection with the data to be written and optionally another one
with extra data. The extra data can be used, for example, to send static urls
that are not part of the first collection.require "rubygems"
require "taq-sitemapper"data = [{url: "One" , lastmod: Time.now, freq: "monthly", priority: 1},
{url: "Two" , lastmod: Time.now, freq: "monthly", priority: 1},
{url: "Three", lastmod: Time.now, freq: "monthly", priority: 1}]extra= [{url: "Four" , lastmod: Time.now, freq: "yearly", priority: 0.5},
{url: "Five" , lastmod: Time.now, freq: "yearly", priority: 0.5},
{url: "Six" , lastmod: Time.now, freq: "yearly", priority: 0.5}]sitemapper = SiteMapper::SiteMapper.new
sitemapper.loc = :url
sitemapper.changefreq = :freq
sitemapper.priority = :priority
sitemapper.file = "/tmp/sitemap_class.xml"
sitemapper.url = "http://localhost.com/sitemap.xml"
sitemapper.write_sitemap(data.entries)# extra data
sitemapper.file = "/tmp/sitemap_class_extra.xml"
sitemapper.write_sitemap(data.entries,extra.entries)The default values for the attributes are:
url = nil
loc = :loc
lastmod = :lastmod
changefreq = "daily"
priority = 1.00
file = nilThe can be changed (as above) to point to some method, attribute or static
value. For example, if your collection has an attribute called url and you
want to use it as the loc attribute, you can point that using
sitemapper.loc = :url and on the example above. It's important that the extra
collection have the same attributes as the main collection.If the file attribute is null, no sitemap file will be written.
If the url attribute is not null, you can use the ping method to send a ping
to search engines, pointing to the sitemap on the url.As a module
You can use it also as a module. Of course the main use for this kind of
behaviour was thinking about the use with ActiveRecord, but will (hopefully)
work on other type of collections:require "rubygems"
require "active_record"
require "taq-sitemapper"ActiveRecord::Base.establish_connection({
adapter: "sqlite3",
database: "../test/taq-sitemapper.sqlite"
})class SitemapperTestAR < ActiveRecord::Base
include SiteMapper
sitemap[:file] = "/tmp/sitemap_module.xml"
sitemap[:changefreq] = :freq
sitemap[:priority] = :priorityafter_save :write_sitemap
def self.sitemap_extra
[{loc: "Four", lastmod: Time.now, freq: "yearly", priority: 0.5},
{loc: "Five", lastmod: Time.now, freq: "yearly", priority: 0.5},
{loc: "Six" , lastmod: Time.now, freq: "yearly", priority: 0.5}]
enddef loc
url
enddef write_sitemap
self.class.write_sitemap
end
end
SitemapperTestAR.write_sitemap# extra data
SitemapperTestAR.sitemap[:extra] = :sitemap_extra
SitemapperTestAR.sitemap[:file] = "/tmp/sitemap_module_extra.xml"
SitemapperTestAR.write_sitemapSitemapperTestAR.sitemap[:file] = "/tmp/sitemap_module_extra_after_save.xml"
first = SitemapperTestAR.first
first.saveSome points here:
1 - Is inserted an attribute accessor called sitemap on the object. The same
class attributes described above are accessible there, as a hash. For
example, Object.sitemap[:file]
2 - The default for collections is the all method. If need to change it, set the
sitemap[:collection] attribute to point to the desired method.
3 - The extra collection is pointed to sitemap[:extra]. There is no need to
use these attributes if calling directly the write_sitemap method with the
collections. The extra collection method, if set, needs to be a class
method.
4 - You can use some hooks like after_save to create the sitemap after an object
is saved, see the example above.