跳转到主要内容

可定制的下拉菜单

项目描述

为Plone提供的可定制导航菜单。功能包括

  • 手动定义导航菜单条目

  • 对单个条目设置条件

  • 通过读取给定文件夹的内容自动生成子菜单

  • 从静态页面手动生成子菜单

  • 单个条目可以同时存在两种类型的子菜单

  • 菜单没有预设样式。您可以在网站主题中自定义样式。

  • 处理多个配置,绑定到不同的路径。例如,用于处理子站点。

基本配置

这是控制面板的样式

docs/example1.jpg

在标题下方可以找到选项卡。每个选项卡包含单个路径的配置。我们将在稍后详细介绍这一点,现在我们将专注于主选项卡,其名称为当前Plone站点的名称。

path字段包含此配置的根路径。此路径下的每个路径都将使用此菜单。

path字段之后是一个菜单项列表(图片中只显示了一个)。每个菜单项都是一个包含五个字段的可折叠、可排序(通过拖动上下)和可删除的字段集。

tab_title是菜单条目的标题。这是将打印在主导航菜单上的字符串。

导航文件夹是我们可以从其中自动生成子菜单的文件夹路径。

附加列是包含页面的文件夹路径。页面的文本将添加到生成的子菜单中。这可以与导航文件夹字段一起使用,例如,用于向生成的子菜单添加图片,但也可以单独使用,以生成静态的自定义子菜单。

如果我们使用一个或两个上述字段,主导航链接将切换生成的可折叠子菜单。

简单链接覆盖前两个字段,可以用于创建指向指定URL的简单链接。

条件是一个表达式,用于验证是否显示菜单条目。在创建新条目时默认为python: True,可以更改为python: False以隐藏条目,作为基本配置,但允许更复杂的表达式。请参阅此处完整列表:http://docs.plone.org/develop/plone/functionality/expressions.html#expression-variables

在条目列表之后,您可以找到一个按钮(添加项),用于添加新的菜单条目。

添加多个菜单

如果您单击控制面板顶部的加号图标,您可以添加额外的菜单配置。这是单击后您将看到的示例

docs/example2.jpg

已创建一个新的标签页,临时标题为 /new1,除非您插入正确的路径并保存更改,否则不会更改。在加载页面时,小部件会查找具有指定路径的对象,并使用该对象的标题作为面板标题。

路径必须设置为新的菜单根所在的路径。例如,如果您想为子站点使用不同的菜单,请将 路径 字段设置为子站点根路径。

此时会为您自动创建一个名为“新”的默认菜单项。点击它以打开并开始编辑。

当您正在编辑与主站配置不同的菜单配置时,您将在屏幕底部看到额外的红色按钮,显示“删除此菜单”。这将删除整个标签页。

注意:删除菜单意味着您将丢失之前在此菜单中编写的一切。

不过,请记住,除非您点击控制面板底部的蓝色 保存 按钮,否则不会将任何更改保存到任何菜单的配置中。

事件

菜单链接将从菜单中触发三个不同的自定义事件。

  • editablemenu.submenu.opened:当菜单完成滑动下来时

  • editablemenu.submenu.closed:当菜单完成滑动上去时

  • editablemenu.submenu.loaded:当菜单完成加载新内容时

安装

通过将其添加到您的构建中安装collective.editablemenu

[buildout]

 ...

 eggs =
     collective.editablemenu

然后运行“bin/buildout”

兼容性

此插件已在Plone版本5.0和5.1上进行测试。

对于Plone 4的兼容性,请使用版本0.10.2(专用分支即将推出…)

升级旧版本

从2.1.0版本开始,我们删除了一个自2.0.0以来已替换的旧配置。为此,我们需要删除一些未使用的代码/接口。

如果您有非常旧的此产品版本(< 0.10.0),则应安装2.0.0版本并执行升级步骤,然后再安装最新版本。

开发

在此产品中包含几个静态资源

  • scss样式

  • 配置菜单的React应用程序

  • 渲染菜单的Js

编译小部件配置应用程序

转到 src/collective/editablemenu/browser/static/js/widget 文件夹。

然后安装依赖项

yarn

最后编译React应用程序

yarn build

之后,您需要编译所有资源并将它们捆绑到资源注册表捆绑包中

进入项目的根目录并为Grunt安装依赖项

npm install

最后编译和压缩资源

npm run compile

贡献

许可证

本项目采用GPLv2许可证。

贡献者

变更日志

2.3.0 (2019-09-10)

  • 添加了自定义动态部分标签的选项 [pnicolli]

2.2.0 (2019-07-05)

  • 添加了python3支持。 [cekk]

2.1.1 (2019-05-24)

  • 修复了submenu_detail_view.pt,以便条件不会调用文件夹对象。 [eikichi18]

2.1.0 (2018-12-20)

  • 如果上下文不在结构映射中,则不会破坏视图。 [cekk]

破坏

  • 从代码中删除了旧式注册条目中未使用的类/接口。请参阅README以获取升级信息(仅当您从 < 0.10.0 开始时)。 [cekk]

2.0.0 (2018-10-11)

破坏

  • 重写了菜单模板以改进可访问性 [pnicolli]

  • 通过ES处理aria-expanded和ESC按键事件 [nzambello]

1.2.0(未发布)

  • 删除了未使用的旧代码 [cekk]

  • 修复了没有当前文件夹设置时的菜单渲染 [cekk]

  • 添加了初始测试套件(功能性和验收)

  • 添加测试套件(功能性和验收) [cekk]

1.1.0 (2018-05-15)

  • 当菜单打开、关闭和加载时添加了自定义事件 [pnicolli]

1.0.1 (2018-04-27)

  • 修复了过时的plone.directives.form导入 [pnicolli]

1.0.0 (2018-03-12)

  • 修复zcml条件以注册global_sections视图小部件。它现在在Plone 5上同时添加了两个不同的视图小部件,现在其中一个已经消失。[pnicolli]

  • plone.protect JavaScript脚本曾被添加到子菜单HTML中,现在已手动从异步响应中删除。[pnicolli]

  • 将配置格式移动到使用JSON字符串[daniele-andreotti]

  • 全新的控制面板布局[pnicolli]

  • 修复choose_site_menu_config方法以采用正确的路径[fdelia]

0.10.2 (2017-09-13)

  • 修复simple_link字段的URL生成。现在可以正确处理内部或外部链接。[cekk]

0.10.1 (2017-01-23)

  • 修复升级步骤[lucabel]

0.10.0 (2017-01-20)

  • BREAKING:子菜单现在在菜单

  • 元素内创建,而不是在
      之后[pnicolli]

0.9.1 (2016-12-02)

  • 添加了对菜单静态部分的Dexterity支持[pnicolli]

  • 页面模板现在在类内部加载,以允许更轻松地克隆视图小部件[pnicolli]

  • 在菜单中添加简单的“不可展开”链接[lucabel]

  • 添加与portal_tabs相同的方式来条件化标签页的可见性[lucabel]

  • 添加Plone5兼容性(无资源注册器)[cekk]

0.9.0 (2016-03-15)

  • 修复MANIFEST.in和trove分类器,以便在PyPI上发布包[ale-rt]

0.2.1 (2016-01-11)

  • 修复JavaScript调用[cekk]

0.2.0 (2016-01-11)

  • 修复注册问题[cekk]

0.1.0 (2016-01-05)

  • 初始发布。[cekk]

项目详情


下载文件

下载适合您平台的文件。如果您不确定要选择哪个,请了解更多关于安装包的信息。

源分布

collective.editablemenu-2.3.0.tar.gz (473.5 kB 查看哈希值)

上传时间

支持者