当添加我的内容类型的对象时,我需要添加一个条件以避免加载某些javascript代码;以下条件仅在编辑对象时有效:
<?xml version="1.0"?>
<object name="portal_javascripts">
<javascript id="form_tabbing.js"
expression="python:object.portal_type != 'collective.nitf.content'" />
</object>
此javascript代码负责创建选项卡界面,但我想绕过它用于我的用例。
任何提示?
答案 0 :(得分: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 magic, enable_form_tabbing 属性将允许您控制表单上的标签。
这同样适用于EditForm。
希望有所帮助
答案 1 :(得分:1)
它应该是 python:context.portal_type!='collective.nitf.content'
答案 2 :(得分:0)
尝试使用敏捷类型的portal_type,而不是meta_type。所有敏捷项都具有'敏捷FTI'的meta_type。这也意味着对meta_type进行过滤的OFS方法将无效,您必须使用列表推导。
答案 3 :(得分:0)
我试过了,你也可以这样做:
python:context.restrictedTraverse('@@plone_interface_info').provides('your.dotted.interface.IName')
Kudos Mikko! :-) http://readthedocs.org/docs/collective-docs/en/latest/components/interfaces.html?#plone-interface-info