instituteweb/iw_master

iw_master 是满足企业级需求的 TYPO3 CMS 发行版。易于部署。高度可扩展。

安装: 110

依赖项: 0

建议者: 0

安全: 0

类型:项目

3.0.2 2017-01-15 21:53 UTC

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 中的 requirerequire-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时,您将得到以下两点

  1. 您可以使用@php作为脚本(这是Composer中本地的,感谢Jordi)。这使用的是Composer调用的PHP_BINARY,使得在具有不同php二进制名称的系统(例如php_cli)上也能使用相同的脚本调用。
  2. 仅限Windows:它还会更新Windows上的目录分隔符,并将从批处理文件中提取php脚本,然后用.bat文件调用替换。这允许您在系统无关的情况下运行相同的脚本调用。

您可以在以下位置找到

EXT:project

“project”扩展位于/web/typo3conf/ext/project/。它包含所有项目相关内容,并且每个系统都有所不同。iw_master的基础结构有助于快速定位和查找内容。

后端布局

PageTS配置和fluid模板

EXT:configuration/Templates/BackendLayouts/

LayoutPartial文件夹位于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_templateroot 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启用管理员面板。

此外,它在页面右下角显示橙色(开发)或黄色(测试)徽章,以确保访客在开发或测试环境中。