Dexterity开发手册:第六章 第7节静态资源

Dexterity开发手册:第六章 第7节静态资源
添加图片和样式表 本手则开始部分,我们看了怎样创建视图,怎样用文件和图片字段。这些都是动态对象。然而,我们也经常需要一些静态资源 如 image/icon, CSS or JavaScript文件等。
注册静态资源目录
管理静态资源最简单的方法是通过 five.grok注册一个静态资源目录。即在包中添加一个叫"static"的目录,并保证加入<grok:grok package="." />行在configure.zcml文件中即可。
如果在静态资源目录中包含一个conference.css文件,那么它的可调用访问路径是 http://<server>/site/++resource++example.conference/conference.css.
如果你需要注册另外的资源目录,你可以用 <browser:resourceDirectory /> ZCML语句。这个语句要求两个属性:名称 出现在 ++resource++ namespace后面; 目录 一个包含资源的相对路径。
在页面模板中导入 CSS 和 JavaScript文件
静态资源通常被加到模板中。通常可以填充Plone的 main_template中的 style_slot 或者 javascript_slot
例如:在我们的 presenter_templates/view.pt中,可以按如下方式添加css:
<head> <metal:block fill-slot="style_slot"> <link rel="stylesheet" type="text/css" tal:define="navroot context/@@plone_portal_state/navigation_root_url" tal:attributes="href string:${navroot}/++resource++example.conference/conference.css" /> </metal:block> </head>
注意,应当让所有资源路径都是相对于站点根,以便资源缓存。
用 Plone的 resource registries注册资源
可以采用 portal_css registry (或者portal_javascripts)注册全站有效的css 或者js代替上文讲的每模板情况的注册。
portal_css 和 portal_javascripts 将归并、压缩资源,相应设置caching headers
采用 GenericSetup cssregistry.xml or jsregistry.xml 文件注册资源文件,例如加入conference.css文件的方法如下:
<?xml version="1.0"?> <object name="portal_css"> <stylesheet id="++resource++example.conference/conference.css" title="" cacheable="True" compression="safe" cookable="True" enabled="1" expression="" media="screen" rel="stylesheet" rendering="import" /> </object>同理,加入一个js文件在jsregistry.xml 中:<?xml version="1.0"?> <object name="portal_javascripts"> <javascript cacheable="True" compression="none" cookable="True" enabled="False" expression="" id="++resource++example.conference/conference.js" inline="False"/> </object>引用资源文件夹中的图片文件:
<img style="float: left; margin-right: 2px; margin-top: 2px" tal:define="navroot context/@@plone_portal_state/navigation_root_url" tal:attributes="src string:${navroot}/++resource++example.conference/program.gif" />内容类型图标
我们在注册内容类型时,可以指定一个图标,采用下面的语法:
<property name="content_icon">++resource++example.conference/presenter.gif</property>
设置