networkteam/neos-selectivemaintenance

为页面树中的特定文档启用维护模式。

0.1.0 2023-02-17 13:19 UTC

This package is auto-updated.

Last update: 2024-09-17 19:44:23 UTC


README

为页面树中的特定文档启用维护模式。

安装

将此包添加到您的站点包composer.json中。

cd Packages/Sites/Your.Site
composer require networkteam/neos-selectivemaintenance --no-update

运行节点迁移以添加默认值。

flow node:migrate 20230216214800 --confirmation true

配置

此包提供了一个处理器,用于替换通用内容为维护内容。首先,您需要决定在您网站布局的哪个位置渲染维护内容。以下是一些示例:

  • 替换完整主体
  • 仅替换主要内容,同时仍然显示导航和页脚

查看Neos 演示包。它提供了几个页面类型。其中一些是:

  • 页面
  • 着陆页
  • 章节
  • 基础

替换完整主体

如果您想替换处于维护状态页面的完整主体,请将处理器添加到基础文档(Neos.Demo:Document.Base)。

Packages/Sites/Neos.Demo/Resources/Private/Fusion/Document/Base.fusion

/**
 * Prototype to render a page with all scripts and styles but with
 * a replaceable body and bodyClass via props
 */
prototype(Neos.Demo:Document.Base) < prototype(Neos.Fusion:Component) {
    body = null
    bodyClass = null

    renderer = Neos.Neos:Page {
        head {
            stylesheets {
                site = Neos.Demo:Document.Fragment.StyleSheets
            }
            javascripts {
                site = Neos.Demo:Document.Fragment.JavaScripts
            }
            metadata = Neos.Demo:Document.Fragment.MetaData
        }

        bodyTag.attributes.class = ${props.bodyClass}
        body = ${props.body}
+       body.@process.maintenaceContent = Networkteam.Neos.SelectiveMaintenance:MaintenanceContent 
    }
}

仅替换主要内容

为了仅替换主要内容,您需要单独调整每个文档。

将处理器添加到mainContent属性。以下示例显示默认页面。其他文档也适用相同的步骤。

Packages/Sites/Neos.Demo/Resources/Private/Fusion/Document/Page.fusion

/**
 * Default page-rendering for the Neos.Demo website
 */
prototype(Neos.Demo:Document.Page) < prototype(Neos.Fusion:Component) {
    mainMenu = Neos.Demo:Document.Fragment.Menu.Main
    secondaryMenu = Neos.Demo:Document.Fragment.Menu.Secondary
    metaMenu = Neos.Demo:Document.Fragment.Menu.Meta
    breadcrumbMenu = Neos.Demo:Document.Fragment.Menu.Breadcrumb
    languageMenu = Neos.Demo:Document.Fragment.Menu.Language

    mainContent = Neos.Demo:Document.Fragment.Content.Main
+   mainContent.@process.maintenanceContent = Networkteam.Neos.SelectiveMaintenance:MaintenanceContent
    footerContent = Neos.Demo:Document.Fragment.Content.Footer

    bodyClass = ${q(node).parents().count() >= 1 && q(node).children('[instanceof Neos.Neos:Document]').filter('[_hiddenInIndex=false]').count() > 0 ? 'has-subpages' : null}

    renderer = Neos.Demo:Document.Base {
        bodyClass = ${props.bodyClass}
        body = afx`
            <div class="top-navigation-wrap navbar-fixed-top">
                <div class="container">
                    {props.languageMenu}
                    {props.mainMenu}
                    {props.secondaryMenu}
                </div>
            </div>

            <div class="container">
                {props.breadcrumbMenu}
                {props.mainContent}
            </div>

            <footer role="navigation" class="navbar navbar-default">
                <div class="panel panel-default">
                    <div class="panel-body clearfix">
                        <div class="container">
                            {props.metaMenu}
                        </div>
                    </div>
                    <div class="panel-footer">
                        <div class="container">
                            {props.footerContent}
                        </div>
                    </div>
                </div>
            </footer>
        `
    }
}

用法

  1. 在页面树中某个位置创建包含维护信息的页面。
  2. 选择应处于维护模式的页面。
  3. 启用维护模式,并设置先前创建的页面为维护页面