Plone插件,用于添加AJAX导航
项目描述
为Plone站点添加AJAX导航。
这可能是添加AJAX导航不是最先进或最前沿的方式;对于Plone 5,我听说基于 plone.patternslib,基于 patternslib。
对于 Volto 站点,由于使用 React.js,可能整个基于jQuery的处理都已经过时。
在我写作的时候,由于我仍在使用Plone 4.3,所以没有这些选项。因此,我需要一个可行的解决方案。根据质量,我将在跳跃到Plone 5时切换到某个类似Plone 5的解决方案,或者我会坚持使用自己的。
总体思路是
捕获页面上每个 a 元素的 click 事件。
对于某些链接,将进行特殊检查以继续执行标准行为,即以标准方式加载目标;这包括
当前站点之外的链接目标(给出了另一个主机名)
管理页面(例如以 manage_ 开头)
其他不加载导航链接等或通过AJAX加载时不会工作或其他页面
具有某些属性(data-fullpage-only="true")的锚点元素
尚未具有适合嵌入视图的上下文的视图
对于此类链接目标,此函数将简单地返回 true,并且页面将以标准方式加载。
如果检查函数得出“让我们通过AJAX加载目标”的结论,它将向一个.../@@ajax-nav地址发送请求,该地址将返回所有必要的JSON数据;使用结果,它将在页面上查找某些元素并尝试更新它们
#content(默认配置下content的目标)
以及可选的
面包屑
其他页面元素,如上下文特定的搜索表单。
它还将相应地设置页面URL和标题(分别来自JSON回复的@url和@title键),允许浏览器记录历史。
如果尝试的URL无法返回可用的JSON答案,或者目标URL因其他原因不合适(例如,页面局部或离开当前站点),则将正常加载目标页面(即,加载整个页面)。
所有超链接将继续在关闭JavaScript的情况下工作;当然,打开JavaScript时页面加载速度会更快。
功能
待办事项
使用Web Worker。
使此包RequireJS感知。
提供对更多搜索配置的支持。
从要替换的内容中选择值,并重新插入它们(例如,上下文特定搜索表单中的搜索表达式)。
示例
此插件目前正在开发中,尚未在公共互联网网站上使用。
文档
最终用户的完整文档可以在“docs”文件夹中找到。
安装
通过将其添加到您的buildout中安装visaplan.plone.ajaxnavigation
[buildout] ... eggs = visaplan.plone.ajaxnavigation
然后运行bin/buildout。
或者,更有可能的是
将其添加到您的包的依赖项中,例如在您的setup.py文件中。
您需要为您的内容类型提供@@embed视图;理想情况下,您可以使用您现有的BrowserView类。通常,复制您的view模板并注入一个ajax_load=1请求变量就足够了。
问题
“为什么你不简单地自动在每个BrowserView代码中注入那个ajax_load变量?”
是的,我们已经这样做了。
有一个简单的.views.AjaxLoadBrowserView类负责这个,还有一些子类。
“为什么你不丢弃那个embed视图名称,而简单地使用view,并注入ajax_load=1?”
我们这样做作为一个后备选项。但是,我们的一些页面根本不按这种方式工作(例如,因为一些必要的脚本在METAL槽中加载,如果发现ajax_load为真,则该槽被丢弃),所以我们需要能够明确。
因此,如果存在,将使用..._embed视图,然后作为后备,标准视图将跳入。
visaplan.plone.ajaxnavigation包是为了可能没有完全做到位的站点而开发的即插即用解决方案。如果你的站点在注入ajax_load后运行正常,你将需要进行更少的自定义工作来使其运行。
很可能有多个方面可以做得更好。欢迎贡献力量。
贡献
支持
如果你遇到问题,请告诉我们;请使用上面提到的问题追踪器。
许可证
本项目采用GPLv2(或更高版本)许可。
贡献者
托拜厄斯·赫尔普,tobias.herp@visaplan.com
变更日志
1.0.0.3 (2020-03-06)
由于定制问题导致的即时修复(仅限内部使用)。
[tobiasherp]
1.0.0 (2020-03-06)
首次发布。 [tobiasherp]
项目详情
visaplan.plone.ajaxnavigation-1.0.0.tar.gz 的哈希
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 928eebd3d01bd5654e204c40f1d23562aef5cce14ff8085e84887966a9847b4d |
|
MD5 | 0e0f06fa2cd802e00426d8087b07adc1 |
|
BLAKE2b-256 | a166aec2117c3a9591bb2a0d5ddf19c672b68d82201500798cfcf9e246249287 |