bmack/site-importer

从Yaml文件结构导入记录到TYPO3数据库

安装: 72,360

依赖者: 0

建议者: 0

安全: 0

星标: 21

关注者: 4

分支: 6

开放问题: 1

类型:typo3-cms-extension

2.0.0 2024-07-26 09:10 UTC

This package is auto-updated.

Last update: 2024-08-26 09:16:59 UTC


README

基于TYPO3和TYPO3 Console构建。

简介

在TYPO3项目中进行部署时,TYPO3的某些配置存储在数据库中,这是非常繁琐的问题。

尽管TYPO3一直在不断改进,但仍有一些遗留问题。

sys_domain

域名记录是最有问题的。在一个多站点项目(一个安装中的多个网站)中,反复设置域名记录并保持同步非常令人烦恼。这个小工具将帮助解决这个问题。

sys_template

基本TypoScript信息仍然需要从数据库中加载。

自TYPO3 v8以来,有像“bolt”这样的扩展提供了很好的解决方案,不再需要sys_template记录。

页面上单个数据库字段的更改解决了我们大多数项目的这个问题。

sys_language

我们的大多数项目有很多语言,但我们首先将它们添加到生产环境中,以确保整个系统中所有ID都相同。

基本用法

我们的部署设置使用composer、.env和TYPO3控制台。部署通过ansible或deployer进行,或完全透明地通过platform.sh进行。

根据环境,通常包括本地、测试、预发布和生产系统,我们需要将域名记录添加到所有我们的项目中。

为了使用站点导入器,请通过composer添加此包

composer req bmack/site-importer

之后,在项目仓库的某个位置创建一个yaml文件。我们的设置通常如下所示

bin/
conf/
web/
var/
vendor/
composer.json
composer.lock

在这种情况下,为本地设置创建一个文件conf/site_dev.yaml。它看起来像这样

domains:
  mode: "replace"
  table: "sys_domain"
  entries:
    - { domainName: "myproject.local", pid: 1 }
    - { domainName: "myproject-ch.local", pid: 1 }
    - { domainName: "myproject-microsite.local", pid: 13056 }

可以根据需要创建其他用于预发布、生产等的文件。

选项mode描述了在添加条目之前是否截断数据库表,但也可以设置为appendupdate。如果设置为append,则条目将作为纯插入写入,而不考虑记录是否已存在。

如果mode设置为replace,则首先截断表,然后插入条目。

如果mode设置为update,则会发生以下情况

  • 检查条目是否包含uid属性。如果没有,则将条目插入为新记录(就像如果mode设置为append一样发生)。
  • 如果条目包含uid属性,脚本会检查该记录是否在表中存在。如果存在,则执行SQL更新以更新记录。如果不存在,则插入。

该文件可以接受多个表,因此,所有语言记录也可以添加,但这可以在通用的sites.yaml文件中完成,该文件适用于所有环境。

在部署时,只需调用bin/typo3cms siteimport:fromfile conf/site_dev.yaml即可导入配置的记录集。

platform.sh

对于platform.sh,我们在post-deploy钩子中使用bin/typo3cms siteimport:fromfile conf/site_$PLATFORM_BRANCH.yaml来替换特定分支的记录。