networkteam/neos-contentsubstitution 问题修复 & 功能扩展

解决BUG、新增功能、兼容多环境部署,快速响应你的开发需求

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

networkteam/neos-contentsubstitution

Composer 安装命令:

composer require networkteam/neos-contentsubstitution

包简介

Placeholder substitution for Neos CMS: replaces {{variable}} placeholders in rendered content with values configured via Fusion, including a Neos UI richtext editor plugin to insert placeholders.

README 文档

README

Placeholder substitution for Neos CMS: replaces {{variable}} placeholders in rendered content with values configured via Fusion. Ships with a Neos UI richtext editor plugin that lets editors insert placeholders from a searchable dropdown in the CKEditor toolbar.

Installation

composer require networkteam/neos-contentsubstitution

How it works

The package provides the Fusion object Networkteam.Neos:ContentSubstitution, which replaces all placeholders matching a configurable pattern (default: {{...}}) in a string with values from its variables map:

prototype(Networkteam.Neos:ContentSubstitution) {
    value = ${value}
    pattern = '/\{\{(.*?)\}\}/'
    variables = Neos.Fusion:DataStructure
}
  • Unknown placeholders are left untouched (the original {{...}} text is kept).
  • Substitution only happens in the live workspace — in the backend, editors see the raw placeholder, making it obvious that a substitution will happen.
  • Variable names are trimmed, so {{ myVariable }} and {{myVariable}} are equivalent.

By default the substitution is applied to the whole body of every page via a @process on Neos.Neos:Page:

prototype(Neos.Neos:Page) {
    body.@process.networkteamContentSubstitution = Networkteam.Neos:ContentSubstitution
}

Configuration

Define variables

Declare the available variables and their values in your site package's Fusion:

prototype(Networkteam.Neos:ContentSubstitution) {
    variables {
        companyName = 'ACME Inc.'
        supportMail = ${Configuration.setting('Vendor.Site.supportMail')}
    }
}

Values are evaluated per request with node in context, so they can depend on the current dimension, site, or any other context.

Editor dropdown (Neos UI)

To offer editors a dropdown for inserting placeholders in a richtext editor, list the variable names in the frontend configuration:

Neos:
  Neos:
    Ui:
      frontendConfiguration:
        'Networkteam.Neos.ContentSubstitution':
          variables:
            - companyName
            - supportMail

Entries can also be objects with a separate human-readable label shown in the dropdown (the value is what gets inserted as {{value}}):

          variables:
            - value: 'company.name'
              label: 'Company name'

and enable the feature per property via editorOptions:

'Vendor.Site:Content.Text':
  properties:
    text:
      ui:
        inline:
          editorOptions:
            contentSubstitution: true

Inserting placeholders from Fusion

The Networkteam.Neos:Placeholder prototype renders a placeholder string, e.g. for use in templates that should be substituted later:

placeholder = Networkteam.Neos:Placeholder {
    variable = 'companyName'
}

Usage in custom rendering (e.g. headless / Content API)

Networkteam.Neos:ContentSubstitution can be applied as a @process to any string value, as long as node is in context:

title = ${q(node).property('title')}
title.@process.contentSubstitution = Networkteam.Neos:ContentSubstitution

For PHP-based rendering (e.g. a custom Fusion implementation), declare the object as a sub-path of your prototype and evaluate it per value with the runtime — see the Fusion object's value property, which can be fed from any context variable.

Development

The editor plugin sources live in Resources/Private/Scripts/ContentSubstitutionEditor. Rebuild the bundle with:

yarn install
yarn build   # requires NODE_OPTIONS=--openssl-legacy-provider on Node >= 17

The build output is committed to Resources/Public/ContentSubstitution.

License

GPL-2.0-or-later, see LICENSE.

networkteam/neos-contentsubstitution 适用场景与选型建议

networkteam/neos-contentsubstitution 是一款 基于 JavaScript 开发的 Composer 扩展包,目前已累计 0 次下载、GitHub Stars 达 0, 最近一次更新时间为 2026 年 07 月 15 日, 在 PHP 生态内属于活跃度较高的组件。

我们在过去多个企业项目中使用过 networkteam/neos-contentsubstitution 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。

围绕 networkteam/neos-contentsubstitution 我们能提供哪些服务?
定制开发 / 二次开发

基于 networkteam/neos-contentsubstitution 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。

BUG 修复 & 性能优化

线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。

项目外包 & 长期维护

承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。

yvsm@zunyunkeji.com QQ:316430983 微信:yvsm316 西安尊云信息科技 · 专注 PHP / Go / 分布式系统研发

统计信息

  • 总下载量: 0
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 6
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 0
  • Forks: 0
  • 开发语言: JavaScript

其他信息

  • 授权协议: GPL-2.0-or-later
  • 更新时间: 2026-07-15