mohsinqk / headless

此扩展提供了一种从TYPO3以JSON格式输出内容的方法。

维护者

详细信息

github.com/MohsinQK/headless

源代码

安装: 402

依赖项: 0

建议者: 0

安全: 0

星星: 0

关注者: 0

分支: 56

类型:typo3-cms-extension

v3.2.3 2022-12-04 14:39 UTC

This package is auto-updated.

Last update: 2024-08-26 13:26:13 UTC


README

TYPO3 10 TYPO3 11 CI Status Latest Stable Version Total Downloads License Contributor Covenant Coverage Status

Headless

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] 模拟页面预览的后端模块(具有特定页面类型、语言、用户组)

其他扩展和集成

要求和兼容性

随着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)⬇️

image

旧的响应(版本2.x)⬇️

image

数据处理

您可以使用数据处理器,就像在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)