如何使用Chameleon或Zope页面模板轻松创建CSS斑马条纹?我想为表中的每一行添加odd
和even
类,但是使用条件repeat/name/odd
或者repeat/name/even
看起来相当冗长,即使使用条件表达式:
<table>
<tr tal:repeat="row rows"
tal:attributes="class python:repeat['row'].odd and 'odd' or 'even'">
<td tal:repeat="col row" tal:content="col">column text text</td>
</tr>
</table>
Run Code Online (Sandbox Code Playgroud)
如果您有多个要计算的类,这将变得特别繁琐.
我想只删除Plone标准内容类型(Document,Folder,blabla)的经典"描述字段"的"视图",因为我需要用结构化文本"结构化"该字段的文本,如:
This is my description<br/>
with many lines<br/>
bla bla<br/>
Run Code Online (Sandbox Code Playgroud) 我知道为了性能,最好nocall
在a 上使用<tal:condition>
以避免调用对象.会欣赏(链接)一些背景,因为这对我来说听起来有点模糊:-)
所以你什么时候使用nocall?把它放在我所有的条件下会不会受伤?
谢谢 !
Jinja的沙箱和Zope 2 RestrictedPython似乎解决了类似的问题.有没有办法对它们进行分层,即在Jinja环境中使用RestrictedPython策略?该用例是将Jinja模板改造为现有的基于Zope2的产品,以取代ZPT/TAL.
Plone在其页面中展示了我母语(巴西葡萄牙语)中的特殊字符.但是,当我使用spt页面时,我创建它显示转义序列,例如:
Educa\xc3\xa7\xc3\xa3o
Run Code Online (Sandbox Code Playgroud)
代替
Educação
Run Code Online (Sandbox Code Playgroud)
(顺便说一句,这意味着教育).我正在创建一个python函数来用utf字符替换转义序列,但我有一种感觉,我在没有必要的情况下无所事事.
我正在为包含文件的对象编写模板.我正在按照主题构建块说明进行操作.
<a tal:attributes="href item/id">foo</a>
Run Code Online (Sandbox Code Playgroud)
这使得liks下载文件,如下所示:
<a href="foo">foo</a>
Run Code Online (Sandbox Code Playgroud)
但我希望该链接指向文件的视图页面,显示其标题,描述以及允许下载它.所以我想获得下一个输出:
<a href="foo/view">foo</a>
Run Code Online (Sandbox Code Playgroud)
如何生成该属性?
将相关信息存储在HTML
标签中是一种很好的做法吗?
$("#my_div").append("<span id='info' boo='foo'/>");
$("#info").attr("boo");
Run Code Online (Sandbox Code Playgroud)
我在TAL
(in ZPT
)中遇到过这样的技术(稍微借用它),你可以使用tal:attributes
语句来修改HTML
标签(例如,boo
从后端传递变量的值,作为属性值在最终文档中呈现):
<span id='info' tal:attributes='boo view/boo'>
Run Code Online (Sandbox Code Playgroud)
结果:
<span id='info' boo='foo'>
Run Code Online (Sandbox Code Playgroud)
这种技术有一天会破坏文档,还是规范安全?
我在python中定义了一个字典:
tal:define="dic python:{'a':'1', 'b':'2'};"
Run Code Online (Sandbox Code Playgroud)
我有另一个使用tal:define
名为var 定义的变量,它是'a'或'b'.我尝试这样做时出错:
tal:define="foo python:dic['${var}'];"
Run Code Online (Sandbox Code Playgroud)
(foo那么'1'或'2')我明白了KeyError: '${var}'
.我试过了dic[$var]
,dic[var]
等等,他们都没有用.如何使用先前定义的变量tal:define
作为字典的键来获取其值.
为什么在该元素内部fill-slot
或define-macro
元素外定义的变量不可见?
<body tal:define="a string:a">
<metal:content-core fill-slot="content-core">
<metal:content-core define-macro="content-core"
tal:define="b string:b">
<div tal:content="a" />
<div tal:content="b" />
<div tal:content="c" />
</metal:content-core>
</metal:content-core>
</body>
Run Code Online (Sandbox Code Playgroud)
a
无法评估带变量的故事表达式.当然b
是可见的.
另一方面,如果变量c
是在如下所示的封闭元素中定义define-slot
的那么它是可见的.
<div tal:define="c string:c">
<metal:text define-slot="content-core"></metal:text>
</div>
Run Code Online (Sandbox Code Playgroud)
看起来只有在插入插槽后才会评估变量.
这是一个相当不寻常的请求,但是可以将子域提取到变量吗?
e.g.
(1) sub1.mydomain.com
(2) sub2.mydomain.com
Run Code Online (Sandbox Code Playgroud)
当我点击(1)我想保存"sub1",反之亦然.我用plone(python和tal).感谢你的输入.
我在Plone中有一个用于页面模板的TALES,它查看集合的结果并将它们插入到一个框中(类似于集合portlet的框)
我在从返回的项目中获取URL时遇到问题,我一直在使用getPath,但是它返回了站点名称,因此我的URL最终变为http://mysite.com/ThePloneSite/folder/page
而不仅仅是http://mysite.com/folder/page
,目前我的示例TALES如下:
<a tal:attributes="href string:${item/getPath}/view">Item</a>
Run Code Online (Sandbox Code Playgroud)
我已经尝试了我能想象到的每一个变化,但我不记得它们所以所以这里有一对不起作用:
(这什么都不返回)
<a tal:attributes="href item/absolute_url">Item</a>
Run Code Online (Sandbox Code Playgroud)
这给了我一个追溯,抱怨"getpath":
<a tal:attributes="python:item.getObject().absolute_url()">Item</a>
Run Code Online (Sandbox Code Playgroud)
站点名称在链接中令人讨厌的唯一原因是,为了访问"状态"和"显示"按钮,您必须在最初单击链接后单击"查看"
注意:最后一个示例在您使用时有效,getFolderContents
但我知道从集合返回的结果是不同的.
非常感谢任何帮助,谢谢.
EDIT Traceback绝对版本:
Traceback (innermost last):
Module ZPublisher.Publish, line 126, in publish
Module ZPublisher.mapply, line 77, in mapply
Module ZPublisher.Publish, line 46, in call_object
Module Shared.DC.Scripts.Bindings, line 322, in __call__
Module Shared.DC.Scripts.Bindings, line 359, in _bindAndExec
Module Products.PageTemplates.ZopePageTemplate, line 334, in _exec
Module Products.PageTemplates.ZopePageTemplate, line 431, in pt_render
Module Products.PageTemplates.PageTemplate, line 79, in pt_render
Module zope.pagetemplate.pagetemplate, line 113, in …
Run Code Online (Sandbox Code Playgroud) zpt ×13
plone ×10
template-tal ×10
zope ×7
python ×4
archetypes ×1
chameleon ×1
css ×1
html ×1
jinja2 ×1
performance ×1
subdomain ×1