使用 Plone 4.1.4.
有一个名为/employment 的容器,该容器具有也称为 employment 的页面的默认视图。
就业容器中还有一个名为 foo 的附加页面
当我添加锚标签(通过TinyMCE或直接html)时,它会"自动"链接到父文件夹而不是当前页面。
我在http://www.example.com/employment/foo
我尝试在foo页面上添加一个链接<a href="#bar">
。
我希望链接在呈现时http://www.example.com/employment/foo#bar
但相反,它显示为http://www.example.com/employment/#bar
知道为什么它默认为父"文件夹"而不是当前实际所在的页面吗?是一些奇怪的缓存问题还是 url 重写伏都教?
您是否在TinyMCE的设置中启用了"使用UID链接"?UID 链接启用 URL 重写过滤器,该过滤器将所有相对链接解析为绝对链接。Id 在相对链接方面存在问题,但这些问题应该在 plone.outputfilters>= 1.2 中修复(例如,它不再尝试"修复"锚链接)。
您可能在这里成为基本标签的受害者。浏览器使用基本标记来确定相对链接的参考点。如果基本标记显示基本网址是您的容器,那么您创建的相对链接最终将相对于该容器呈现。
检查呈现页面头部的 base 值,看看是否是这种情况。
对于我在 Plone 4.3.3 中使用灵巧内容类型来说,这仍然是相关的问题。
起初,当我创建非文件夹内容类型时,锚链接正常工作。但是在我将其转换为文件夹容器类型后,锚链接行为发生了变化。
在看到 Cris(克里斯)的答案后,我相信基本标签会根据内容类型而变化,无论它是否是文件夹。然而,导航链接(例如,在 Portlet 导航树中)没有。这会阻止锚链接的使用。
已经提交了关于此的票证,解决方案似乎是在 plone 5.0 中完全删除基本标签。
对于 plone 4.3.3。我只能考虑对文件夹内容类型模板中的锚链接使用绝对 URL。
<a tal:attributes="href string:${context/absolute_url}#anchor">My Anchor</a>