【发布时间】:2019-09-24 22:48:29
【问题描述】:
如何使用 TYPO3 为我可以提交给 Google 的图片创建站点地图?
这不是关于从菜单内容元素中扩展图像的站点地图元素,而是我网站所有已发布图像的列表。
【问题讨论】:
标签: typo3 typo3-9.x typo3-extensions
如何使用 TYPO3 为我可以提交给 Google 的图片创建站点地图?
这不是关于从菜单内容元素中扩展图像的站点地图元素,而是我网站所有已发布图像的列表。
【问题讨论】:
标签: typo3 typo3-9.x typo3-extensions
有一个扩展来创建使用图像的 XML 站点地图。但它还不兼容 9 LTS。 https://extensions.typo3.org/extension/tgm_copyright/
2019 年 12 月更新
该扩展现在也与 9 LTS 兼容。
【讨论】:
我认为您无法以简单的方式获得所有图像的列表。
包含图片的方法有多种,所有方法都需要一个副作用来标记图片站点地图的图片。
此外,您可能会使用不应列出的图像,因为应列出以相同方式使用的其他图像。例如一些背景图片可能值得一提,有些只是像阴影或结构这样的样式。
在 TYPO3 的早期,您可以为上传中的所有文件建立索引,因为每个使用的图像都被复制到那里,但现在您只能索引您的原始文件夹,并且可能包括未使用的图像。
您可以使用爬虫扫描所有生成的页面以了解图像的使用情况,但现在可以通过多种方式包含图像。除了旧的img 标签之外,还有picture 和更难的 CSS 在背景属性中隐藏图像以避免容易复制。
【讨论】:
我相信,您可以使用自 TYPO3 7.6 以来可用的数据处理器做一些事情。
例如使用 DatabaseQueryProcessor 和 FilesProcessor 的组合来获取用户有权访问的所有内容元素:
lib.yourFluidTemplate = FLUIDTEMPLATE
lib.yourFluidTemplate {
10 = TYPO3\CMS\Frontend\DataProcessing\DatabaseQueryProcessor
10 {
table = tt_content
pidInList = 1
# all subpages as well
recursive = 99
as = contentElements
dataProcessing {
10 = TYPO3\CMS\Frontend\DataProcessing\FilesProcessor
10 {
# use field "assets"
references.fieldName = assets
as = files
}
}
}
}
lib.yourFluidTemplate 可以是您页面的模板或任何 fluid_styled_content 模板。只要它使用FLUIDTEMPLATE 内容对象。
应用上面的打字稿后,您的流体模板中应该有一个名为 contentElements 的新变量(as 变量定义了它的名称),并且每个项目都应该有一个带有文件名的 files 键。
这当然会从您的根页面(在本例中为 1)开始获取所有内容元素不管如果它们有图像或注释,这可能是负载过大。
编辑:您必须为每种类型的记录添加一个这样的配置,如果它有多个引用图像的字段,则可能为每个记录添加多个 FilesProcessor 配置。
【讨论】: