networkteam / neos-selectivemaintenance
为页面树中的特定文档启用维护模式。
0.1.0
2023-02-17 13:19 UTC
Requires
- neos/neos: ~7.3|~8.0
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>
`
}
}
用法
- 在页面树中某个位置创建包含维护信息的页面。
- 选择应处于维护模式的页面。
- 启用维护模式,并设置先前创建的页面为维护页面