1

我们正在使用django 站点地图框架来生成搜索引擎友好的 xml 站点地图。它工作正常。很高兴使用和自定义您自己的需求。

我知道我可以重写用于 xml 站点地图的模板,或者使用普通的数据库查询等生成我们系统中所有页面的列表,但很难相信没有针对这种常见问题的预配置解决方案。

我只想在普通(html)前端视图中使用与我们的 xml 站点地图中使用的列表相同的列表。

TL;博士:

构建旨在帮助人们在我们网站上查找内容(而不是机器人)的 html 站点地图的最佳/默认方式是什么?

4

1 回答 1

5

您可以将站点地图处理器生成的 xml 嵌入到标准 html 中

    url(r'^sitemap/','django.contrib.sitemaps.views.sitemap', \
                      {'sitemaps'      : sitemaps,
                       'template_name' : '<yoursite>/usr_sitemap.html',
                       'mimetype'      : 'None'}),

将“mimetype”设置为 none 将允许您在用于生成的模板中包含 html 代码。这将生成包含站点地图 xml 代码的 html。然后,您需要使用 css 对其进行样式设置。示例模板(usr_sitemap.html)将是:


{% extends 'base.html' %}
{% load staticfiles %}

{% block content %}  << the content section of the base.html 
<?xml version="1.0" encoding="UTF-8" type='text/css' href='{% static '<yoursite>/your_css.css' %}'?>
<urlset
  xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
  xmlns:news="http://www.google.com/schemas/sitemap-news/0.9">
{% spaceless %}
{% for url in urlset %}
  <url>
    <loc>{{ url.location }}</loc>
    {% if url.lastmod %}<lastmod>{{ url.lastmod|date:"Y-m-d" }}</lastmod>{% endif %}
    {% if url.changefreq %}<changefreq>{{ url.changefreq }}</changefreq>{% endif %}
    {% if url.priority %}<priority>{{ url.priority }}</priority>{% endif %}
    <news:news>
      <news:tag1> blabla  </news:tag1>
      <news:tag2> blabla </news:tag2>
    </news:news>
   </url>
{% endfor %}
{% endspaceless %}
</urlset>
{% endblock %}
于 2013-09-02T16:31:02.070 回答