如何将Plone内容架构字段中的值传递给JQuery函数?

ckr*_*all 3 jquery plone

我有一个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>
Run Code Online (Sandbox Code Playgroud)

JQuery函数:

$(document).ready(function() {
    $('#divRss').FeedEk({
        FeedUrl: '[item_url]',
        MaxCount: [item_count],
        ShowDesc: [item_desc],
    });
});
Run Code Online (Sandbox Code Playgroud)

JQuery在我的HTML代码中查找特定的对象ID(在本例中为"divRss")并写出代码以生成feed内容.所以在我的模板视图文件中,它看起来像这样:

<div id="tabs-feed-widget-patients" class="easytabs tab-container">

        <div id="divRss" />

</div>
Run Code Online (Sandbox Code Playgroud)

Mat*_*ias 5

由于您的类型具有自定义视图页面模板,因此可以通过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>
Run Code Online (Sandbox Code Playgroud)

您可以通过数据属性扩展它,您也可以将主题放在模板中的其他位置(或隐藏它们)

<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>
Run Code Online (Sandbox Code Playgroud)

您的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'),
    });
});
Run Code Online (Sandbox Code Playgroud)

那么实施可以改进:-)但是这应​​该指向正确的方向.