Home

Tags

sitemap на jinja2 + bottle

2010-04-07 python jinja bottle sitemap

Делаем страничку /sitemap.xml, нам нужно получить только ссылки на страницы и время их последнего изменения

@route('/sitemap.xml')
def sitemap():
    curtime = time.strftime("%Y-%m-%dT%H:%M+00:00", time.gmtime())
    res = []
    # Запрос к базе данных
    cur.execute('SELECT id,dtime FROM pages')
    for r in cur:
        res.append( [r[0], time.strftime("%Y-%m-%dT%H:%M+00:00",time.localtime(r[1]))] )

    return template('sitemap',res=res,curtime=curtime)

а вот шаблон sitemap.tpl
<?xml version="1.0" encoding="UTF-8"?>
<urlset
      xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9
            http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd">

<url>
  <loc>http://example.com/</loc>
  <lastmod>{{curtime}}</lastmod>
</url>{% for m in res %}
<url>
  <loc>http://example.com/page/{{m[0]}}</loc>
  <lastmod>{{m[1]}}</lastmod>
</url>{% endfor %}
</urlset>
Подставляем свой url сайта.
Все, sitemap готов.


В довесок можно сделать robot.txt, для того что-б поисковики индексировали все
@route('/robots.txt')
def robots():
    return 'User-agent: *\nAllow: /\n\n'


подобное: RSS на bottle + jinja2