instituteweb / iw_master
iw_master 是满足企业级需求的 TYPO3 CMS 发行版。易于部署。高度可扩展。
Requires
- arminvieweg/dce: ^1.4
- fluidtypo3/vhs: ^3.0
- instituteweb/environmental: ^1.1
- instituteweb/min: ^1.1
- instituteweb/unroll: ^1.1
- typo3-ter/gridelements: ^7.0
- typo3-ter/nc-staticfilecache: ^3.4
- typo3-ter/news: ^4.0
- typo3-ter/powermail: ^3.3
- typo3-ter/realurl: ^2.1
- typo3/cms: ^7.6
- typo3/cms-about: ^7.6
- typo3/cms-aboutmodules: ^7.6
- typo3/cms-belog: ^7.6
- typo3/cms-beuser: ^7.6
- typo3/cms-documentation: ^7.6
- typo3/cms-filelist: ^7.6
- typo3/cms-fluid-styled-content: ^7.6
- typo3/cms-func: ^7.6
- typo3/cms-impexp: ^7.6
- typo3/cms-info: ^7.6
- typo3/cms-info-pagetsconfig: ^7.6
- typo3/cms-lowlevel: ^7.6
- typo3/cms-reports: ^7.6
- typo3/cms-rsaauth: ^7.6
- typo3/cms-rtehtmlarea: ^7.6
- typo3/cms-scheduler: ^7.6
- typo3/cms-setup: ^7.6
- typo3/cms-t3editor: ^7.6
- typo3/cms-tstemplate: ^7.6
- typo3/cms-viewpage: ^7.6
Requires (Dev)
- instituteweb/deployer-scripts: ^1.2
- typo3-ter/t3adminer: ^7.0
README
iw_master 是满足企业级需求的 TYPO3 CMS 发行版。易于部署。高度可扩展。
它基于 Helmut Hummel 的 TYPO3 发行版 以及他的一些优秀包和 TYPO3 扩展。
第一步
安装完成后(见下文),你应该会看到一个基本的网站结构。
那么如何更新所有这些,从哪里开始呢?
在 web/assets/ 中,你可以放置所有的样式表、JavaScript 和资产,如图片或字体。你需要告诉 TYPO3 加载你的资产(css/js)。你可以在名为 "project" 的项目特定扩展中这样做(EXT:project)。它位于 web/typo3conf/ext/project/
资产的包含存储在 EXT:project/TypoScript/Setup/AssetIncludes.ts 中。下面在 README 中你可以找到每个随 iw_master 一起提供的基于 TypoScript 的文件描述。
控制 TYPO3 HTML 输出的 fluid 模板也存储在 EXT:project 中。它们分为
- 后端布局
- 内容元素(fluid_styled_content)
- 扩展(如新闻、gridelements 等... :))
有关后端布局和 Gridelements 的更多信息,请参阅 "在哪里找到" 部分。
路线图
有两个基本功能缺失才能使其成为一个完整的企业级 TYPO3 发行版。即 前端主模板 和 部署脚本。
前端主模板 主要位于 /markup 文件夹。在根目录的 Grunt/Gulp/Npm 文件。HTML 模板将使用 fluid 模板引擎(独立于 TYPO3 核心,由 Grunt/Gulp 触发)。
对于 自动化部署,尚未最终决定选择哪个工具,但 PHP Deployer 处于决策圈内部。
安装
要创建基于 iw_master 的新 TYPO3 项目,只需像这样使用 composer
composer create-project instituteweb/iw_master:"^3.0" projectfolder
它做什么
- 创建新的文件夹 "projectfolder"
- 添加 iw_master 中的所有文件并获取依赖项(库和 TYPO3 扩展)
- 将依赖项的二进制文件安装到 /bin 文件夹
- 调用 iw_master 欢迎脚本,该脚本将您引导到 TYPO3 安装(
bin/config install
)
在 composer update
之后,它更新数据库模式(创建新表/字段或重命名它们)。在 composer dump-autoload
之后,它生成 PackageStates.php(不需要添加到 vcs)。它还创建了所有 TYPO3 文件夹。
重要: Web 服务器 vhost 配置需要指向 /web 目录。这是唯一的公共目录。通过这种方式,所有其他文件都被严格排除在公共访问之外,从而加强了系统。
TYPO3(sys-)扩展和 composer
所有在 composer.json 中的 require 和 require-dev 部分定义的 TYPO3 扩展都会被 加载 和 自动激活。你还可以通过这种方式激活系统扩展
"require": {
// ...
"typo3/cms-fluid-styled-content": "^7.6",
}
它是前缀为 "typo3/cms-" 的 sys-extension 键,下划线 (_) 转换为破折号 (-)。例如,上面的 EXT:fluid_styled_content。
自己的扩展和 composer
如果你提供了 自己的扩展,你需要在 composer.json 中做两件事
映射 PHP 类的路径到你的命名空间。例如 "extension project"
"autoload": {
"psr-4": {
"VendorName\\Project\\": "web/typo3conf/ext/project"
}
},
使用 typo3_console 激活你的扩展。在命令行中输入以下内容
bin/typo3cms extension:activate project custom_extension another_one
你应该也将扩展添加到 composer.json 中,以防你总是(也在生产环境中)想自动启用扩展。
脚本
iw_master 提供了两个 composer 事件,这可能有助于你
\InstituteWeb\Environmental\Scripts\ComposerEvents::stopIfNoDatabaseConnection
该功能检查当前设置/环境是否具有有效的数据库连接。如果没有,后面的所有脚本将不再执行。这有助于避免需要有效数据库连接的任务出错。
\InstituteWeb\ComposerScripts\ImprovedScriptExecution::apply
当您应用ImprovedScriptExecution时,您将得到以下两点
- 您可以使用
@php
作为脚本(这是Composer中本地的,感谢Jordi)。这使用的是Composer调用的PHP_BINARY,使得在具有不同php二进制名称的系统(例如php_cli
)上也能使用相同的脚本调用。 - 仅限Windows:它还会更新Windows上的目录分隔符,并将从批处理文件中提取php脚本,然后用.bat文件调用替换。这允许您在系统无关的情况下运行相同的脚本调用。
您可以在以下位置找到
EXT:project
“project”扩展位于/web/typo3conf/ext/project/
。它包含所有项目相关内容,并且每个系统都有所不同。iw_master的基础结构有助于快速定位和查找内容。
后端布局
PageTS配置和fluid模板
EXT:configuration/Templates/BackendLayouts/
Layout
和Partial
文件夹位于EXT:configuration的根目录。如果您想添加新的后端布局,您需要在EXT:configuration/TypoScript/Setup/Templates.ts
中注册它们。
Gridelements
Gridelements以包的形式存储。每个包包含一个图标、setup.ts和tsconfig.t3。不同的文件扩展名在这里很重要,用于区分Setup(ts)和PageTS(t3)文件。
包位于这里
EXT:configuration/Templates/Extensions/Gridelements/
TypoScript配置
在EXT:configuration/TypoScript/
中组织了所有TypoScript文件。您需要将这些文件包含到您的sys_template和root page中。
EXT:configuration/TypoScript/Constants.ts
EXT:configuration/TypoScript/Setup.ts
EXT:configuration/TypoScript/TsConfig.ts
如果您想将UserTsConfig存储到文件中,您可以将文件添加到这里。
Constants.ts
所有常量都位于这个单个文件中。如果您需要,可以将其拆分,但通常不需要。在constants.ts中,我们主要使用local。我们假设您可能有多个共享数据的页面树,如fe_users。因此,本地常量是为当前页面树准备的。一个全局可用的常量可以使用global。
我们还有一个translate常量,它指向locallang.xlf以进行翻译。
这允许我们在TypoScript中稍后使用它
10 = TEXT
10.data = {$translate}keyInLocallangFile
TsConfig.ts
它加载TsConfig文件夹中的所有文件。我们试图将PageTS拆分为操作字段。例如RTE或所有Tceform中的TCA操作。此外,扩展也可以有自己的文件在这里。尽可能明智地使用它。
Config.ts
在Setup文件夹中,我们找到了主要的typoscript。首先加载的是Config.ts,它包含TypoScript顶级对象config
的所有配置。
这是一个坚固的基本配置,启用了压缩和html5预设。当后端用户登录时,config.no_cache
为true。
Page.ts
Page.ts是第二个重要的配置文件。它提供我们的page
对象,并控制元标签、视口和headerData内容,如自定义页面标题,该标题可以由locallang自动添加后缀。此外,如果您在页面选项中使用了content_from_pid
功能,它还会自动添加一个规范标签,并将当前语言uid附加到body标签的类和数据属性中。
Templates.ts
如您所猜,Templates.ts是此配置的第三大组成部分。它在Page.ts中使用,当我们告诉我们的page
使用10 =< lib.templates.base
时。它是一个引用,因此当您稍后在TypoScript中更改它们时,对lib.templates.base
的更改也会生效。
它定义了部分和布局文件夹的路径,并获取了定义的变量。我们尽量避免使用cObject视图助手,因为这会从模板内部创建依赖。最好从一开始就将所有信息传递给视图进行渲染。如果变量不足,您也可以使用Fluid的数据处理器。
我们还在这里定义了要渲染的模板路径。它基于所选的后端布局。这是一个最佳实践解决方案。但如果需要,您可以将所选的后端布局与显示的Fluid模板解耦。
此外,我们在lib.templates.columns中定义了所有可用的列。因此,如果您有一些额外的列,您可以在这个中央点定义它们,并将它们传递给上面的变量。
AssetIncludes.ts
它包含存储在/web/assets/
中的资产。如果您使用类似grunt或gulp的任务运行器,可以将输出放在这个位置。
有用信息:所有资产都被压缩、精简并连接。您可以在每个资产或全局在Config.ts
中更改此设置。
Languages.ts
包含双语言系统的示例配置,德语为默认语言,英语为外语。
TtContent.ts
包含对tt_content的所有修改(css_styled_content或默认的fluid_styled_content)。
Debug.ts
当查询字符串中有?debug=1
时,启用所有TYPO3的调试,禁用资产压缩,并在源代码中作为HTML注释打印一些调试信息。您还可以使用?cssdebug=1
和?jsdebug=1
分别控制它,以及使用?adminpanel=1
启用管理员面板。
此外,它在页面右下角显示橙色(开发)或黄色(测试)徽章,以确保访客在开发或测试环境中。