3

在添加我的内容类型的对象时,我需要添加一个条件以避免加载一些 javascript 代码;以下条件仅在编辑对象时有效:

<?xml version="1.0"?>
<object name="portal_javascripts">
 <javascript id="form_tabbing.js"
   expression="python:object.portal_type != 'collective.nitf.content'" />
</object>

此 javascript 代码负责创建选项卡界面,但我想为我的用例绕过它。

有什么提示吗?

4

4 回答 4

3

实际上,你可以用不同的方式解决这个问题。

而不是避免加载 Javascript 文件——这会在缓存等方面产生令人讨厌的后果……——你可以避免它对你的表单起作用。

*form_tabbing.js* 将查找带有enableFormTabbing类的表单元素:

<form class="enableFormTabbing">
  <fieldset id="fieldset-[unique-id]">
    <legend id="fieldsetlegend-[same-id-as-above]">Title</legend>
  </fieldset>
</form>

因此,您需要做的就是避免获取此enableFormTabbing类的形式。

由于您的内容类型是使用 Dexterity 创建的,因此我建议您按如下方式覆盖 AddForm:

class AddForm(dexterity.AddForm):
    """Default view looks like a News Item.
    """
    grok.name('collective.nitf.content')
    grok.layer(INITFBrowserLayer)

    enable_form_tabbing = False

感谢 plone.app.z3cform 魔法enable_form_tabbing属性将允许您控制表单上的选项卡。

这同样适用于 EditForm。

希望有帮助

于 2011-12-03T02:43:56.197 回答
1

它应该是python:context.portal_type!='collective.nitf.content'

于 2011-11-24T09:41:24.397 回答
0

尝试portal_type,而不是带有敏捷类型的meta_type。所有敏捷项目的元类型为“敏捷 FTI。”。这也意味着过滤 meta_type 的 OFS 方法将不起作用,您必须改用列表推导。

于 2011-11-24T17:18:42.000 回答
0

我试过了,你也可以这样做:

python:context.restrictedTraverse('@@plone_interface_info').provides('your.dotted.interface.IName')

向米科致敬!:-) http://readthedocs.org/docs/collective-docs/en/latest/components/interfaces.html?#plone-interface-info

于 2011-11-25T13:54:01.270 回答