如何将 Plone 内容模式字段中的值传递给 JQuery 函数?
How can I pass a value from a Plone content schema field into a JQuery function?
我有一个 Plone Dexterity 自定义类型对象,它使用 JQuery 函数来控制行为。在自定义类型中,我有一些字段允许用户在编辑内容对象时为行为(在本例中为简单的 RSS 提要)设置参数。
目前我将函数参数值直接硬编码到 JQuery 函数中。我希望能够在编辑时从自定义类型字段中获取值,并将它们传递到我的 JQuery 函数中(下面的示例)。
我该怎么做?
敏捷领域:
<field name="item_url" type="zope.schema.TextLine">
<title>rss feed url</title>
<description />
<required />
</field>
<field name="item_count" type="zope.schema.TextLine">
<title>item display number</title>
<description />
<required />
</field>
<field name="item_desc" type="zope.schema.Bool">
<title>enable item description</title>
<description />
<required />
<default>True</default>
<form:widget type="z3c.form.browser.checkbox.SingleCheckBoxFieldWidget"/>
</field>
JQuery函数:
$(document).ready(function() {
$('#divRss').FeedEk({
FeedUrl: '[item_url]',
MaxCount: [item_count],
ShowDesc: [item_desc],
});
});
JQuery 在我的 HTML 代码中查找特定对象 ID(在本例中为 'divRss')并写出代码以生成提要内容。所以在我的模板视图文件中,它看起来像这样:
<div id="tabs-feed-widget-patients" class="easytabs tab-container">
<div id="divRss" />
</div>
由于您有适合您的类型的自定义视图页面模板,您可以通过在视图中添加 data
属性来实现。
我假设您的页面模板中有如下内容。
<div class="divRss">
<div tal:content="context/item_url">Item url</div>
<div tal:content="context/item_count">Item count</div>
<div tal:content="context/item_desc">Item desc</div>
</div>
你可以通过数据属性来扩展它,你也可以把主题放在模板的其他地方(或者隐藏它们)
<div class="divRss">
<div tal:define="url context/item_url"
tal:attributes="data-url url"
tal:content="url">Item url</div>
<div tal:define="count context/item_count"
tal:attributes="data-count count"
tal:content="count">Item count</div>
<div tal:define="desc context/item_desc"
tal:attributes="data-desc desc"
tal:content="desc">Item desc</div>
</div>
您的 JS 代码可能看起来像...
$(document).ready(function() {
$('#divRss').FeedEk({
FeedUrl: $('#divRss div').eq(0).data('url'),
MaxCount: $('#divRss div').eq(1).data('count'),
ShowDesc: $('#divRss div').eq(2).data('desc'),
});
});
好吧,实施可以改进:-)
但这应该指向正确的方向。
我有一个 Plone Dexterity 自定义类型对象,它使用 JQuery 函数来控制行为。在自定义类型中,我有一些字段允许用户在编辑内容对象时为行为(在本例中为简单的 RSS 提要)设置参数。
目前我将函数参数值直接硬编码到 JQuery 函数中。我希望能够在编辑时从自定义类型字段中获取值,并将它们传递到我的 JQuery 函数中(下面的示例)。
我该怎么做?
敏捷领域:
<field name="item_url" type="zope.schema.TextLine">
<title>rss feed url</title>
<description />
<required />
</field>
<field name="item_count" type="zope.schema.TextLine">
<title>item display number</title>
<description />
<required />
</field>
<field name="item_desc" type="zope.schema.Bool">
<title>enable item description</title>
<description />
<required />
<default>True</default>
<form:widget type="z3c.form.browser.checkbox.SingleCheckBoxFieldWidget"/>
</field>
JQuery函数:
$(document).ready(function() {
$('#divRss').FeedEk({
FeedUrl: '[item_url]',
MaxCount: [item_count],
ShowDesc: [item_desc],
});
});
JQuery 在我的 HTML 代码中查找特定对象 ID(在本例中为 'divRss')并写出代码以生成提要内容。所以在我的模板视图文件中,它看起来像这样:
<div id="tabs-feed-widget-patients" class="easytabs tab-container">
<div id="divRss" />
</div>
由于您有适合您的类型的自定义视图页面模板,您可以通过在视图中添加 data
属性来实现。
我假设您的页面模板中有如下内容。
<div class="divRss">
<div tal:content="context/item_url">Item url</div>
<div tal:content="context/item_count">Item count</div>
<div tal:content="context/item_desc">Item desc</div>
</div>
你可以通过数据属性来扩展它,你也可以把主题放在模板的其他地方(或者隐藏它们)
<div class="divRss">
<div tal:define="url context/item_url"
tal:attributes="data-url url"
tal:content="url">Item url</div>
<div tal:define="count context/item_count"
tal:attributes="data-count count"
tal:content="count">Item count</div>
<div tal:define="desc context/item_desc"
tal:attributes="data-desc desc"
tal:content="desc">Item desc</div>
</div>
您的 JS 代码可能看起来像...
$(document).ready(function() {
$('#divRss').FeedEk({
FeedUrl: $('#divRss div').eq(0).data('url'),
MaxCount: $('#divRss div').eq(1).data('count'),
ShowDesc: $('#divRss div').eq(2).data('desc'),
});
});
好吧,实施可以改进:-) 但这应该指向正确的方向。