我们正在使用django sitemap framework生成搜索引擎友好的xml站点地图。它工作正常。根据您自己的需要使用和定制是很好的。
我知道我可以重写用于xml站点地图的模板,或者使用正常的数据库查询生成我们系统中所有页面的列表等等,但是很难相信没有针对这种常见问题的预配置解决方案。
我只想在普通(html)前端视图中使用与xml站点地图相同的列表。
TL; DR:
构建html站点地图的最佳/默认方式是什么,旨在帮助人们在我们的网站上找到东西(而不是机器人)?
答案 0 :(得分:4)
您可以将站点地图处理器生成的xml嵌入标准html
中 url(r'^sitemap/','django.contrib.sitemaps.views.sitemap', \
{'sitemaps' : sitemaps,
'template_name' : '<yoursite>/usr_sitemap.html',
'mimetype' : 'None'}),
将'mimetype'设置为none将允许您在用于生成的模板中包含html代码。这会生成包含sitemap 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 %}