module SitemapGenerator::LinkSet::LocationHelpers
Public Instance Methods
Return the current compression setting. Its value determines which files will be gzip'ed. See the setter for documentation of its values.
# File lib/sitemap_generator/link_set.rb, line 650 def compress @compress end
Set the value of the compress setting.
Values:
* `true` - Boolean; compress all files * `false` - Boolean; write out only uncompressed files * `:all_but_first` - Symbol; leave the first file uncompressed but compress any remaining files.
The compression setting applies to groups too. So :all_but_first will have the same effect (the first file in the group will not be compressed, the rest will). So if you require different behaviour for your groups, pass in a `:compress` option e.g. group(:compress => false) { add('/link') }
# File lib/sitemap_generator/link_set.rb, line 642 def compress=(value) @compress = value @sitemap_index.location[:compress] = @compress if @sitemap_index @sitemap.location[:compress] = @compress if @sitemap end
Set the value of create_index
on the SitemapIndexLocation
object of the SitemapIndexFile.
Whether to create a sitemap index file. Supported values: `true`, `false`, `:auto`. If `true` an index file is always created, regardless of how many links are in your sitemap. If `false` an index file is never created. If `:auto` an index file is created only if your sitemap has more than one sitemap file.
# File lib/sitemap_generator/link_set.rb, line 609 def create_index=(value, force=false) @create_index = value # Allow overriding the protected status of the index when we are creating a group. # Because sometimes we need to force an index in that case. But generally we don't # want to allow people to mess with this value if the index is protected. @sitemap_index.location[:create_index] = value if @sitemap_index && ((!@sitemap_index.finalized? && !@protect_index) || force) end
Set the host name, including protocol, that will be used by default on each of your sitemap links. You can pass a different host in your options to `add` if you need to change it on a per-link basis.
# File lib/sitemap_generator/link_set.rb, line 502 def default_host=(value) @default_host = value update_location_info(:host, value) end
Set the filename base to use when generating sitemaps (and the sitemap index).
Example¶ ↑
filename = :sitemap
Generates¶ ↑
sitemap.xml.gz, sitemap1.xml.gz, sitemap2.xml.gz, ...
# File lib/sitemap_generator/link_set.rb, line 554 def filename=(value) @filename = value self.namer = SitemapGenerator::SimpleNamer.new(@filename) end
Return the namer object. If it is not set, looks for it on the current sitemap and if there is no sitemap, creates a new one using the current filename.
# File lib/sitemap_generator/link_set.rb, line 628 def namer @namer ||= @sitemap && @sitemap.location.namer || SitemapGenerator::SimpleNamer.new(@filename) end
Set the namer to use to generate the sitemap (and index) file names. This should be an instance of SitemapGenerator::SimpleNamer
# File lib/sitemap_generator/link_set.rb, line 619 def namer=(value) @namer = value @sitemap.location[:namer] = value if @sitemap && !@sitemap.finalized? @sitemap_index.location[:namer] = value if @sitemap_index && !@sitemap_index.finalized? && !@protect_index end
Return a Pathname with the full path to the public directory
# File lib/sitemap_generator/link_set.rb, line 524 def public_path @public_path ||= self.send(:public_path=, 'public/') end
Set the public_path. This path gives the location of your public directory. The default is the public/ directory in your Rails root. Or if Rails is not found, it defaults to public/ in the current directory (of the process).
Example: 'tmp/' if you don't want to generate in public for some reason.
Set to nil to use the current directory.
# File lib/sitemap_generator/link_set.rb, line 514 def public_path=(value) @public_path = Pathname.new(SitemapGenerator::Utilities.append_slash(value)) if @public_path.relative? @public_path = SitemapGenerator.app.root + @public_path end update_location_info(:public_path, @public_path) @public_path end
Return the hash of search engines.
# File lib/sitemap_generator/link_set.rb, line 569 def search_engines @search_engines || {} end
Set the search engines hash to a new hash of search engine names mapped to ping URLs (see ping_search_engines). If the value is nil it is converted to an empty hash.
Example¶ ↑
search_engines = { :google => "http://www.google.com/webmasters/sitemaps/ping?sitemap=%s" }
# File lib/sitemap_generator/link_set.rb, line 564 def search_engines=(value) @search_engines = value || {} end
Return a new SitemapIndexLocation
instance with the current options included
# File lib/sitemap_generator/link_set.rb, line 588 def sitemap_index_location SitemapGenerator::SitemapLocation.new( :host => sitemaps_host, :namer => namer, :public_path => public_path, :sitemaps_path => @sitemaps_path, :adapter => @adapter, :verbose => verbose, :create_index => @create_index, :compress => @compress ) end
Return a new SitemapLocation
instance with the current options included
# File lib/sitemap_generator/link_set.rb, line 574 def sitemap_location SitemapGenerator::SitemapLocation.new( :host => sitemaps_host, :namer => namer, :public_path => public_path, :sitemaps_path => @sitemaps_path, :adapter => @adapter, :verbose => verbose, :compress => @compress, :max_sitemap_links => max_sitemap_links ) end
Set the host name, including protocol, that will be used on all links to your sitemap files. Useful when the server that hosts the sitemaps is not on the same host as the links in the sitemap.
Note that `include_index` will be turned off to avoid adding a link to a sitemap with a different host than the other links.
# File lib/sitemap_generator/link_set.rb, line 542 def sitemaps_host=(value) @sitemaps_host = value update_location_info(:host, value) end
Set the sitemaps_path. This path gives the location to write sitemaps to relative to your public_path. Example: 'sitemaps/' to generate your sitemaps in 'public/sitemaps/'.
# File lib/sitemap_generator/link_set.rb, line 531 def sitemaps_path=(value) @sitemaps_path = value update_location_info(:sitemaps_path, value) end
Protected Instance Methods
Update the given attribute on the current sitemap index and sitemap file location objects. But don't create the index or sitemap files yet if they are not already created.
# File lib/sitemap_generator/link_set.rb, line 658 def update_location_info(attribute, value, opts={}) opts = SitemapGenerator::Utilities.reverse_merge(opts, :include_index => !@protect_index) @sitemap_index.location[attribute] = value if opts[:include_index] && @sitemap_index && !@sitemap_index.finalized? @sitemap.location[attribute] = value if @sitemap && !@sitemap.finalized? end