在前几天写的一篇博文《为网站添加图片网站地图》中我提到有三种办法来实现网站地图:
- 专门写的php程序,与.htaccess的rewrite配合重写网址(详见《Drupal网站Views生成页面的XML网站地图构建》)
- 用module文件中的menu路径来生成(详见《Drupal中用module文件中的menu路径来生成sitemap.xml》)
- 用views中的xml views来生成(现在来写这篇博客文章来介绍)
以前很早就想过用views来做xml sitemap,替代一直用的sitemap.php,但没有成功,这几天终于是尝试出来了,下面进行记录。
首先需要安装和开启Views XML这个模块(是Views的一个子模块Views Datasource中的一部分),如下图:
然后在Views中创建这样的页面,格式要选择“XML data document”,并进行如下样式选项设置:
而需要获取数据的逻辑与自己写php程序中的查询语句逻辑是一样的,只是这里用Views来实现。另外,输出的字段需要添加PHP字段,以便对其它字段内容进行获取和变换,最后输出合适的loc。然后可以添加几个固定内容字段用于priority, changefreq,而lastmod可以根据需要使用固定内容字段填充或者PHP字段进行计算。
这里是一个简单的例子:sitemap-emoji-version.xml。
对于数量比较少的,用这个办法比编写sitemap.php方便多了,不需要php程序连接数据库、设置.htaccess等。不过如果链接超过几万个,还有索引型sitemap如何来做、gz压缩如何做等问题还没有考虑和尝试。
另外,还找到生成的views页面设置加到sitemap中的办法,以前是人工添加到sitemap,但新增页面有时容易忘记去添加,可以设置一个Sitemap菜单类别,把views页面添加一个菜单项(属于Sitemap菜单类别),这样Drupal的Sitemap就可以在更新的时候自动把这样的views页面添加到网站地图中。
还有更详细的步骤需要截更多的图,这里就不添加太多了,自己摸索摸索就OK。
评论2
drupal有现成的sitemap模块
drupal有现成的sitemap模块 https://www.drupal.org/project/xmlsitemap谢谢,这个XMLSITEMAP模块我们也用了很多年了
谢谢,这个XMLSITEMAP模块我们也用了很多年了,只是有部分我们的需求这个模块不好满足,我们才使用了上面文章中的另外的办法。