跳转到主要内容

以不干扰的方式为特定Plone导航条目扩展/折叠功能

项目描述

简介

本产品的目的是在不修改导航代码本身或覆盖其功能的情况下,使Plone导航(部件)的展开/折叠功能成为可能。

此产品不是一个新的导航部件,而是一个依赖于原生Plone的jQuery支持的JavaScript插件。

更重要的是:它仅专注于使一些导航链接可展开。

你什么时候会喜欢这个?

当您的Plone网站需要(不太多)特殊处理导航元素时,collective.navigationtoggle非常有用。有时您的网站结构可能如下所示:

ROOT
|
|_ FolderWhatever
\_ NotImportantFolder
   |
   |_ ImportantFolder1
   ...
   \_ ImportantFolderN

如果您在网站根目录上配置导航部件,用户必须点击NotImportantFolder并重新加载整个页面才能到达ImportantFolder部分的链接。在NotImportantFolder级别的网站没有用……也许您只提供一个folder_listing视图或一个默认页面,只说“欢迎来到网站的 重要区域,请访问您要查找的子部分……”。

对用户体验来说,第一次点击只是浪费时间。

您所寻找的可以是一个客户端效果,该效果可以展开/折叠导航中的文件夹。在您的信息架构中,NotImportantFolder本身不被视为真正的内容。

会有什么变化

Closed navigation from AUSL site Open navigation from AUSL site

使特殊导航链接不再将用户移动到目标部分,而是在导航中本身显示所有子部分(因此导航看起来就像用户真的移动到了目标文件夹)。

第二次点击将折叠部分。

文件夹中的默认页面、带有“从导航中排除”标记的元素以及来自metaTypesNotToList属性的未想要类型将被排除。

脚本试图尽可能好地模拟正常的部件导航行为。

代码考虑到了优雅降级。未启用JavaScript的浏览器将简单地使用基本Plone导航功能。

详细文档

基本配置

在您的Plone配置面板中,您将找到新的“导航切换设置”。

Setup of Navigation Toggle configuration

从这个部分,您可以配置许多高级选项,主要您需要配置

链接选择器

一组URL路径后缀,例如href属性的/foo1/foo2。使用此示例,以下链接将被触发

<a href="http://plonehost/plone/foo1/foo2">

通常只检查导航部件内的链接(请参阅“切换容器类”)。

您也可以在此处提供一个复杂的jQuery表达式,例如

li.navTreeItem a

如果您没有直接提供一个匹配HTML <A>元素的选择器,您仍然需要查询该节点内的某些内容,例如

li.navTreeItem a.contenttype-folder span

在上面的最后一个示例中,只有点击导航条目文本才会触发展开/折叠功能,而点击图标将保持默认的浏览器行为。

动画延迟

此产品可以为您启用在展开/折叠项时使用图形效果。默认情况下是禁用的。

要启用它,您必须将此值更改为大于0的值。您放入的值是用于slideDownslideUp jQuery效果的毫秒数。

将其简单地设置为0(默认值)以禁用效果。

高级配置

缓存

选中它以执行客户端AJAX请求的缓存。如果禁用,则每次点击导航时都会向服务器发送请求。

切换容器类

一组CSS类,用于标记您的导航元素。仅包含这些类之一的元素内的链接是“可切换”的。

请注意,对于使用jQuery表达式而不是URL路径的“链接选择器”条目,此选项将被忽略。

HTML列表类型

要查找的HTML容器元素的类型。

HTML列表项

要生成的HTML元素类型。

样式

此产品会动态地向包含匹配配置的链接的<li>元素添加两个新的可能CSS类。

当页面上显示特殊导航元素且关闭子树时,会添加类“cnavClosed”。当打开子节时,同一元素会添加类“cnavOpen”。

生成的子结构是Plone提供的主要结构的副本,但会添加一个“cnavGenerated”类。

您可以使用这些类在Plone主题中提供额外的样式效果(但此产品并不提供)。

非标准导航(…或组件…或任何你想要的)

此产品可能也适用于非标准的导航HTML结构(因为子元素生成是通过克隆同一导航组件中的现有节点来完成的),但有一些假设。

由于代码几乎在客户端运行,您还可以将其用于非标准导航的组件。理论上,您甚至可以使用它与不是组件的东西!

版本/依赖关系

浏览器

  • Firefox 16(…在我写这行字的时候,可能已经发布了一个新的主要版本…)

  • Google Chrome 23(…与上面相同…)

  • Opera 12

  • Safari 5.1

  • Internet Explorer 8, 9

Plone

  • Plone 3.3(经典Plone主题)

  • Plone 4.2(经典Plone主题和Sunburst)

  • Plone 4.3(经典Plone主题和Sunburst)

依赖关系

缓存控制

切换配置存储在一个JavaScript文件中,您的浏览器和Plone的portal_javascript工具可能会将其缓存。

更改配置时,您可以使用“保存并使JS缓存失效”按钮。

其他产品

如果您需要一个完整的展开/折叠导航功能,此产品不适合您;所以请看看

致谢

在以下机构的支持下开发:

他们都支持PloneGov计划

作者

此产品由RedTurtle技术团队开发。

RedTurtle Technology Site

特别感谢杨红进行大量错误修复。

变更日志

1.0.3 (2020-05-05)

  • 添加了Transifex.net服务集成以管理翻译过程 [macagua]

  • 添加了西班牙语翻译 [macagua]

  • 更新了gettext文件支持 [macagua]

1.0.2 (2014-07-17)

  • 修复了在Plone站点(例如文件系统中的文件夹)中使用产品时 @@query-subelements 的一个错误 [mpampols]

  • 修复了在生成 collective.navigationtoggle.rules.js 时,如果规则包含引号字符,则会将规则错误地放置在内的一个错误 [keul]

1.0.1 (2013-01-24)

  • 使用对象的id作为展开项的备用标题(关闭 #6) [yangh]

1.0.0 (2013-01-15)

  • 修复了当使用包含空格的id的容器时出现的一个错误(关闭 #2) [keul]

  • 生成的元素中的文件图标没有被正确处理(关闭 #3) [keul]

  • 添加了一种使JS缓存失效的方法(关闭 #1) [keul]

  • 现在,通用选择器可以匹配非 <a> 元素,但链接的内容(关闭 #4) [keul]

  • 现在检查 typesUseViewActionInListings 配置(关闭 #5) [keul]

0.4.0 (2012-11-15)

  • 添加了产品的浏览器层 [keul]

  • 提供了一个自定义配置面板 [keul]

  • 将所有剩余的配置添加到Plone UI中 [keul]

  • toggleContainerClass 现在是 toggleContainerClasses (可用于一组类) [keul]

  • 添加了 i18n 支持,以及意大利语翻译 [keul]

  • 更改了 AJAX 调用上下文,现在始终调用门户根 URL [keul]

  • 添加了测试(Plone 和 JavaScript) [keul]

0.3.0 (2011-06-07)

  • 现在可以使用更通用的 jQuery 选择器 而不是简单的 URL 路径 [keul]

  • 不要显示在导航中不希望显示的类型列表中的类型 [keul]

  • collective.navigationtoggle.txt 是空的 [keul]

  • JSLint 清理 [keul]

  • 代码更加通用,并添加了新的属性如 toggleContainerClasslistTypelistItem。现在代码可以用来模拟带有非端口导航结构的导航器 [keul]

  • 添加了卸载 GS 步骤 [keul]

  • 正确修复了 simplejson 依赖项,仅在 Python < 2.6 时 [keul]

  • 可以通过 Plone UI 添加链接选择器 [keul]

0.2.1 (2010-07-09)

  • 修复了在打开的元素上快速双击时的错误(关闭 #1) [keul]

  • 对 Sunburst 支持有了很大改进(以及其他主题,总的来说),现在还会检查链接上的 “contenttype-xx” 和 “state-xx” CSS 类 [keul]

0.2.0 (2010-04-11)

  • query_subelement 观看文档不完整 [keul]

  • 在查询空文件夹时,不要阻止(实际上:模拟)浏览器默认操作 [keul]

  • 防止浏览器缓存(主要针对 Internet Explorer 问题) [keul]

  • 不要总是显示内容图像图标(有时用户在导航中看不到它们) [keul]

  • 现在每个元素节点都会缓存其子树,因此 AJAX 调用只执行一次(可以禁用) [keul]

  • 添加了对 simplejson 的依赖,用于格式化服务器响应 [keul]

  • 添加了与 Plone 4.0 的最小兼容性(UI 结果并不完美) [keul]

  • 添加了简单的向上/向下滑动效果(默认禁用) [keul]

0.1.0 (2010-04-06)

  • 初始版本

项目详情


下载文件

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

源分布

collective.navigationtoggle-1.0.3.tar.gz (77.5 kB 查看哈希)

上传时间

由以下组织支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面