必须覆盖哪个模板才能获取ploneform-widget-render视图以更改窗口小部件的布局

时间:2012-11-16 22:02:20

标签: plone zope dexterity z3c.form

我试图覆盖Dexterity中的默认小部件布局,其中标签,描述和输入区域分为三个行:

Name
The person's name
[________________]

我希望字段显示在表格中:

Name: [_____]
只有当有人在该区域上空盘旋时,才会出现“人名”(如果有的话)。

我可以使用z3c.jbot成功覆盖plone.app.z3cform.templates.macros.pt;但是,对文件plone.app.z3cform.templates.widget.pt的更改没有效果我可以找到。 (见下面的更新。)

我找到的所有模板都要求每个小部件呈现自己,作为带有标签和描述性文本的单个单元,AFAICT使用名为@@ ploneform-render-widget的视图,但我无法找到任何关联的页面模板有了这个观点。任何人都可以建议这样的模板在哪里?

[更新:请注意,plone.app.z3cform中的templates.py包含以下内容,这可能意味着绕过了z3c.bjot:     #小部件呈现模板需要是Zope 3模板     class RenderWidget(ViewMixinForTemplates,BrowserView):         index = ViewPageTemplateFile('templates / widget.pt')     class RenderSingleCheckboxWidget(ViewMixinForTemplates,BrowserView):         index = ViewPageTemplateFile('templates / singlecheckbox.pt')

那么,如果这就是问题,那么必须做些什么才能使它与z3c.jbot兼容?]

感谢。

1 个答案:

答案 0 :(得分:0)

好的,Martijn Pieters提供了我确定的好建议 - 使用css和Javascript进行此操作。

让我分享一下对我有用的东西;希望人们会指出我在哪里使用旧东西,我不合适等等......但这是一个起点:

在我的本地计算机上,我创建了一个名为project-css.css的文件,其中包含以下内容:

.z3cformInlineValidation {
 float: left;
 position: relative;
 display: inline-block;
 background: red;
}
.z3cformInlineValidation label {
 float: left;
 width: 15em;
 background: yellow;
 text-align: right;
}
.z3cformInlineValidation div {
 display: inline;
}
.z3cformInlineValidation input {
 float: left;
 background: pink;
}
.z3cformInlineValidation input[class~="int-field"] {
 background: purple;
 width: 2em;

至少在我的浏览器(不是IE)上,这会产生这样的效果:在右对齐标签之后将输入字段(类型为z3cformInlineValidation类的元素内的元素)放在一个以15 em空格开头的列中框包含标签和输入字段。整数输入字段,由zope / plone / z3cform / dexterity /?标记? “int-field”类的大小减小,因此它们不会扩展到整个框中。 “背景”属性只是用于查看正在发生的事情,并且可以删除。

转到zope管理界面,选择portal_skins,选择自定义,从右上角“添加”按钮附近的下拉列表中选择“文件”,然后单击“添加”。在结果屏幕上,使用project-css.css作为“id”并上传文件project-css.css

转到zope管理界面,选择portal_css,滚动到底部并使用project-css.css填写“id”字段。然后单击“添加”。

我相信CSS会重新排列所有Dexterity默认表单输出。

为了限制它以便它只被我的表单使用,我发现在project_css中包含了一个条件语句,用于project-css.css这样工作(整个表达式周围没有引号)

python: request.URL.endswith('end_of_applicable_url') 

我确信有更合适的方式,如果有人指出它们,我将不胜感激。

当我上次访问Zope / Plone时,我发现这些功能非常诱人,但是文档虽然有所改进,但似乎仍然遗漏了初学者需要快速加速的一两个小小的神奇事物,可能是因为它们对于每天使用该产品的人来说非常明显。