如何让Plone门户注册表找到并烹饪新式静态资源?

时间:2013-09-18 16:19:11

标签: resources plone diazo

我使用++theme++mythemename/js/myscript.js等ID注册的所有JS都会在portal_javascripts上给出以下错误: (resource not found or not accessible)

我知道ID是正确的,因为我可以访问localhost/mysite/++theme++mythemename/js/myscript.js(即使Diazo被禁用)。

如果开发模式已开启,则资源将在最终HTML上传递。然而,在生产模式下,烹饪过程无声地失败。或差不多。获取与portal_javascripts/manage_jsComposition上显示的缓存密钥不同的缓存密钥,我通过访问cooked文件看到以下错误消息:

/* XXX ERROR -- access to '++theme++mythemename/js/myscript.js' not authorized */

有关如何处理这些问题的任何提示?或者我真的需要将它们留下来吗?

2 个答案:

答案 0 :(得分:2)

您是否尝试过浏览器:resourceDirectory而不是plone:static?

 <browser:resourceDirectory
    name="yourJsFolder"
    directory="yourJsFolder"
    layer=".interfaces.IThemeSpecific"
    />

并用以下方式调用你的js:

  

++ ++资源yourJsFolder / yourJsFile.js

答案 1 :(得分:0)

我将你的observatorio.tema包添加到现有的plone 4.1 buildout中,并将一个随机的js文件添加到js注册表中(位于collapsibleformfields.js之后,以便正确熟化)

GS导出如下:

<javascript authenticated="False" cacheable="True" compression="safe"
    conditionalcomment="" cookable="True" enabled="True" expression=""
    id="++theme++observatorio/js/ui.js" inline="False" insert-after="collapsibleformfields.js"/>

portal_jacascripts中没有错误,javascript文件包含在/jquery-cachekey-e7bee35d43da7a91eb29c6586dcbd396.js

你是否为测试目的添加了cacheable =“False”和cookable =“False”? https://github.com/observatoriogenero/observatorio.tema/blob/master/src/observatorio/tema/profiles/default/jsregistry.xml#L373

因为plone:static internal是一个resourceDirectory,它应该和资源注册表一起工作。

也许在你的buildout中有一些其他代码重新注册同名的另一个(空)目录(observatorio)?