此扩展将自动为您的 Bolt 站点创建 XML 站点地图。启用扩展后,请访问http://example.org/sitemap.xml
查看它。
Google 和 Bing 等较大的搜索引擎会在一段时间后自动获取您的站点地图,但明确告诉搜索引擎在哪里可以找到它总是一个好主意。为此,此扩展会自动将链接添加到页面的<head>
部分:
< link rel =" sitemap " type =" application/xml " title =" Sitemap " href =" /sitemap.xml " />
除此之外,最好将以下行添加到robots.txt
文件中:
Sitemap: http://example.org/sitemap.xml
显然,您应该将“example.org”替换为您网站的域名。
默认情况下,此扩展为/sitemap.xml
和/sitemap
添加“路由”,但其优先级低于用户定义的路由。
如果您在routing.yml
中使用pagebinding
,或者任何首先匹配“sitemap”的类似路由,则需要在该路由上方添加以下内容。如果您有可能覆盖默认路由的扩展(例如 AnimalDesign/bolt-translate 扩展),您也应该执行此操作。
sitemap :
path : /sitemap
defaults : { _controller: sitemap.controller:sitemap }
sitemapXml :
path : /sitemap.xml
defaults : { _controller: sitemap.controller:sitemapXml }
请注意,如果您的 ContentType 具有属性searchable: false
,则该内容类型将被忽略。
如果您有自己的捆绑扩展程序,则可以在呈现站点地图之前添加、删除或更改链接。您需要订阅SitemapEvents::AFTER_COLLECTING_LINKS
事件。您将获得的对象是SitemapEvent
类的实例,该类具有返回MutableBag
对象的getLinks
方法。最后一个是一个类似数组的链接列表。参见示例:
protected function subscribe ( $ dispatcher )
{
$ dispatcher -> addListener ( SitemapEvents :: AFTER_COLLECTING_LINKS ,
function ( $ event ) {
/** @var SitemapEvent $event */
$ links = $ event -> getLinks ();
$ links -> add ([
' link ' => ' /lorem-ipsum ' ,
' title ' => ' Hello World! ' ,
' depth ' => 1 ,
]);
}
);
}
如果将templates/sitemap_xml.twig
文件和web/sitemap.xsl
文件复制到主题目录,并在 xml 声明后添加 xsl-stylesheet 声明,则可以使用 xslt 样式表自定义站点地图,以便前两行themes/{yourthemename}/sitemap_xml.twig
看起来像:
<? xml version = " 1.0 " encoding = " UTF-8 " ?>
<? xml-stylesheet type = " text/xsl " href = " {{ paths.theme }}/sitemap.xsl " ?>