© 2013 All rights reserved.
2

Sitemap v Ruby on Rails

Sitemap je soubor, který pomáhá vyhledávačům zorientovat se na webové stránce. Ukážeme si jak jednoduše vygenerovat tento soubor v Ruby.

Co je to sitemap, vysvětlovat nebudu, stručný popis je na Wikipedii, kde si jej můžete přečíst.

Vygenerovat sitemap v Ruby on Rails je vcelku primitivni záležitost.

Jako první si v vytvoříme URL adresu. V routes.rb si přidáme řádek:

v dalším kroku je nutné vytvořit controller. který umístíme, jak jinak než do adresáře app/controllers. Bude se jednat o soubor sitemap_controller.rb ve kterém implementujeme třídu SitemapController odvozenou od ApplicationController.

sitemap_controller.rb

Třída vytváří nový controller, který nemusí používat žádný layout (nastavení: layout nil) protože se bude jednat o čisté XML. Obsahuje jedinou metodu – Sitemap, která vytáhne z databáze záznamy o datech, které chceme zobrazit v sitemapě. v tomto případě se jedná o nové články a nové uživatelské účty na našem webu.

Nakonec odkazujeme do pohledu, který jsme si pojmenovali google_sitemap.rxml (rxml – Rails XML). Tento pohled je umístěn v adresáři: app/views/sitemap.

sitemap.rxml

Na prvním místě si do sitemapy umístíme odkaz na web samotný, tedy na jeho index, do něj odkazujeme přes namapovaný index, pomocí index_url.

V pohledu dále využijeme proměnné, které jsme si z controlleru předali a ty postupně vypíšeme jako XML záznam.

Abychom příklad trochu rozšířili, využíváme v pohledu funkci SitemapDate, kterou si doimplementujeme do helperu:

Sobuor sitemap_helper.rb umístíme do adresáře: app/helpers:

sitemap_helper.rb

Závěrem

Vygenerovat sitemap v Ruby on Rails je opravdu otázkou několika minut, pokud máme aplikaci rozumně rozvrženou. Stačí pouze vytáhnout data z databáze a jednoduše je vypsat v pohledu.

Comments are closed for this page

velmi pekne napisane, lepsie som nenasiel ani v anglictine. dik!

Diky 🙂

About
Hi, i am programmer from the Czech Republic. I love web development (Ruby, Ruby on Rails, PHP, Nette) and iOS development (Objective-C, Cocoa).
To cooperate, here is my phone:
+420 608 836