mohsinqk / headless
此扩展提供了一种从TYPO3以JSON格式输出内容的方法。
Requires
- ext-json: *
- typo3/cms-core: ^11.5
- typo3/cms-install: ^11.5
Requires (Dev)
- ergebnis/composer-normalize: ^2.15.0
- friendsofphp/php-cs-fixer: ^3.1
- helmich/typo3-typoscript-lint: ^3
- justinrainbow/json-schema: ^5.2
- php-coveralls/php-coveralls: ^2.5.2
- phpspec/prophecy-phpunit: ^2.0
- phpstan/extension-installer: ^1.1
- phpstan/phpstan: ^1.9
- phpunit/phpcov: ^8.2
- saschaegerer/phpstan-typo3: ^1.1
- seld/jsonlint: ^1.8
- symfony/yaml: ^5.3
- typo3/cms-form: 11.*@dev
- typo3/testing-framework: ^6
Conflicts
- typo3/cms-core: <11.5.15
Replaces
- friendsoftypo3/headless: 3.2.2
This package is auto-updated.
Last update: 2024-08-26 13:26:13 UTC
README
Headless 允许您从TYPO3内容渲染JSON。您可以通过更改类型、名称和字段的嵌套来自定义输出。
此扩展为TYPO3 PWA解决方案提供后端部分(JSON API)。第二部分是一个JavaScript应用程序nuxt-typo3,它消耗JSON API并使用Vue.js和Nuxt渲染内容。请参阅此处的前端文档:https://typo3-headless.github.io/nuxt-typo3/
如果您有任何问题,请在 #initiative-headless-pwa Slack频道留言。
功能
- 内容元素的JSON API
- 页面和元数据的JSON API
- 导航和布局的JSON API
- 考虑所有语言和翻译配置(例如,回退)
- 易于通过自定义字段或自定义内容元素进行扩展
- 为无头使用直接自定义数据处理器
- 支持EXT:form
- 支持EXT:felogin
- 支持EXT:redirects
- 支持EXT:seo
- [BETA] 模拟页面预览的后端模块(具有特定页面类型、语言、用户组)
其他扩展和集成
- EXT:news的无头支持 headless_news
- EXT:solr的无头支持 headless_solr
- EXT:powermail的无头支持 headless_powermail
- EXT:gridelements的无头支持 headless_gridelements
要求和兼容性
随着TYPO3 v11.5 LTS的发布,我们必须将TYPO3 v9和v10的支持转移到另一个分支,因为这两个版本之间的更改是不兼容的。3.x版本和master分支将支持TYPO3 v11,而headless版本2.x将继续支持v9和v10。
Headless版本3.x
Headless版本2.x
快速入门/演示
如果您想查看包括前端、后端和演示数据的工作演示,请使用我们的基于DDEV的演示项目: https://github.com/TYPO3-Initiatives/pwa-demo
安装
使用composer安装扩展
composer require friendsoftypo3/headless
然后,您应包含扩展typoscript模板,即可开始使用。同时,请记住不要在同一个页面树中使用ext:headless和fluid样式内容。
文档
JSON内容对象
在无头扩展中,我们实现了新的JSON内容对象,允许您指定要输出的字段以及它们的显示方式。首先,让我们看一个简单的例子
lib.page = JSON
lib.page {
fields {
header = TEXT
header {
field = header
}
}
}
输出
{
"header" : "headerFieldValue"
}
此外,关键字fields
允许您在JSON中多次嵌套字段,例如
lib.page = JSON
lib.page {
fields {
data {
fields {
foo = TEXT
foo {
field = bar
}
foo1 = TEXT
foo1 {
field = bar1
}
}
}
}
}
输出
{
"data": [
{
"foo": "bar",
"foo1": "bar1"
}
]
}
用于JSON内容对象的INT、FLOAT和BOOL内容对象
我们引入了新的简单内容对象,以改善前端开发人员的JSON API响应。我们可以设置正确的属性类型,这样前端就不必处理数字字段的字符串值或应该为true/false的字段。
lib.page = JSON
lib.page {
fields {
data {
fields {
foo = INT
foo {
# db value of foo_field = 1
field = foo_field
}
bar = BOOL
bar {
# db value of bar_field = 0
field = bar_field
}
}
}
}
}
输出
{
"data": [
{
"foo": 1,
"bar": false
}
]
}
自定义
您可以使用typoscript覆盖输出中的每个字段。此扩展允许您使用标准typoscript对象,例如TEXT、COA、CASE。
页面响应
在无头模式v3.0版本中,我们引入了新的、更小、更快速且更扁平的页面响应。如果您希望保持前端应用程序的兼容性,可以加载已废弃的typoscript模板(用于2.x版本)并保持旧的结构运行。
新的响应(版本3.x)⬇️
旧的响应(版本2.x)⬇️
数据处理
您可以使用数据处理器,就像在FLUIDTEMPLATE
内容对象中一样,例如。
lib.languages = JSON
lib.languages {
dataProcessing {
10 = TYPO3\CMS\Frontend\DataProcessing\LanguageMenuProcessor
10 {
languages = auto
as = languages
}
}
}
内置数据处理器
我们为无头使用提供了多个数据处理器。
文件处理器
此处理器应用于处理文件(标准或媒体文件)。它还允许您处理图像。
相册处理器
应与FilesProcessor
(链式)一起使用。用于处理多个媒体文件。
菜单处理器
用于导航。工作方式与标准菜单处理器相同。
FlexForm处理器
用于处理flex表单。
根站点处理器
为您的前端应用程序渲染所有无头站点的配置。
开发
此扩展的开发是作为TYPO3 PWA(渐进式Web应用程序)倡议的一部分进行的,请参阅https://typo3.org/community/teams/typo3-development/initiatives/pwa/如果您有任何问题,请加入#initiative-pwa Slack频道。
致谢
特别感谢macopedia.com公司,该公司赞助了此解决方案的开发。
参与项目的开发者
- Łukasz Uznański(Macopedia)
- Adam Marcinkowski(Macopedia)
- Vaclav Janoch(ITplusX)