一个辅助Plone扩展,使得包括针对几种浏览器或平台特定的资源变得更加容易。
项目描述
关于
一个辅助Plone扩展,使得包括针对不同类型的浏览器或平台特定的资源(如CSS、JS、KSS或HTML)变得更加容易。
安装
此包需要Plone 3.x或更高版本(也应该与2.5.x兼容)。
不使用buildout安装
将此包安装到您的系统路径包中或安装到Zope实例的lib/python目录中。您可以使用easy_install或通过setup.py脚本来完成此操作。
安装包后,需要在您的Zope实例中进行注册。这可以通过在etc/package-includes目录中放置一个collective.browserdetector-configure.zcml文件来完成,内容如下
<include package="collective.browserdetector" />
或者,您可以将其添加到已注册的包或产品的configure.zcml中。
使用buildout安装
如果您正在使用buildout来管理您的实例,安装collective.browserdetector将更加简单。您可以通过将其添加到实例的eggs行来安装collective.browserdetector
[instance] eggs = collective.browserdetector zcml = collective.browserdetector
最后一行告诉buildout生成一个zcml片段,该片段告诉Zope配置collective.browserdetector。
如果另一个包依赖于collective.browserdetector egg或直接包含其zcml,您不需要在buildout配置中指定任何内容:buildout将自动检测此内容。
更新配置后,您需要运行“bin/buildout”,这将负责更新您的系统。
用法
存在多种浏览器,大多数是较老版本,它们的网页渲染方式与最新版本的常用浏览器不同。因此,如果您需要使用网站支持这些浏览器,一个可能的方法是包括针对特定浏览器的单独资源以修复它们的不同行为。
Plone 默认包含 IEFixes.css 文件(以及其他几个文件),其中包含与所有 IE 浏览器相关的修复/技巧,但如果您需要针对每个 IE 版本进行不同的修复,那么 collective.browserdetector 就派上用场了。
1. 简单方式(快速开始)
通过快速安装器安装浏览器检测器
转到 ZMI:/portal_skins/collective.browserdetector
选择您浏览器的 CSS 模块(通过其名称)并自定义它
将您的 CSS 技巧添加到自定义的 CSS 文件中
转到 ZMI:/portal_css 并注册您的新资源,请参见以下示例配置:
<stylesheet title="" id="IE6.css" media="screen" rel="stylesheet" rendering="import" cacheable="True" compression="safe" cookable="True" enabled="1" expression="python:portal.restrictedTraverse('@@browser-detector').isIE6"/>
别忘了设置正确的表达式,但不必担心,您唯一需要关心的是其最后一部分“isIE6”,在此示例中,您应根据目标浏览器使用正确的检测器属性(以下列出了可用的检测器属性)
就这样了。
2. 使用策略或主题
将 collective.browserdetector 注册为您的策略包的依赖项(在 metadata.xml 配置模块中)
在皮肤层中包含您的修复 CSS 文件(您可以从 collective.browserdetector/collective/browserdetector/skins/collective.browserdetector/ 复制准备好的 CSS 文件)
通过通用设置注册您的 CSS 文件(请参阅 collective.browserdetector/collective/browserdetector/profiles/default/cssregistry.xml.example 以获取示例)
就这样了。
3. 检测器属性
以下是可用于条件的可用检测器属性:
isSecure, isWebKit, isOpera, isChrome, isSafari, isSafari3, isSafari4, isIE, isIE7, isIE8, isIE6, isGecko, isGecko3, isGecko2, isFirefox, isFirefox1, isFirefox2, isFirefox3, isWindows, isMac, isLinux, isSafariOnMac, isSafariOnWin, isGeckoOnMac, isGeckoOnLinux, isGeckoOnWin, isFirefoxOnMac, isFirefoxOnLinux, isFirefoxOnWin, isOperaOnMac, isOperaOnLinux, isOperaOnWin, isChromeOnMac, isChromeOnLinux, isChromeOnWin
有关更多信息,请参阅 interfaces.py 模块。
4. 小贴士
您还可以为 kss 和 JavaScript 资源使用检测器条件
您可以在模板中使用检测器来渲染不同的(X)HTML,例如,根据浏览器/平台进行渲染:
<tal:block define="detector nocall:context/browser-detector"> <tal:firefox condition="detector/isFirefox"> HERE COMES THE CODE FOR FIREFOX </tal:firefox> <tal:ie condition="detector/isIE"> HERE COMES THE CODE FOR IE </tal:ie> </tal:block>
此外,您还可以在浏览器检测器部件中显示浏览器检测信息。转到部件管理页面(@@manage-portlets)并添加新的部件“浏览器检测器”。部件还包括一个链接(在页脚中),用于显示每种检测方法的检测结果。
版权和致谢
collective.browserdetector 根据 GPL 许可。有关详细信息,请参阅 LICENSE.txt。
作者: Lukas Zdych。
主页: DMS4U。
为 NEXTUP 开发。
变更日志
1.1.2 - (2009-08-20)
修复了由于缺少清单文件而损坏的包 [lzdych]
1.1 - (2009-07-08)
从检测视图删除了内容提供者和可编辑边框 [lzdych]
修复了在 README 示例中使用模板中的检测器时的错误 [lzdych]
添加了与 Firefox 浏览器相关的显式条件属性 [lzdych]
添加了与 Firefox 相关的样式表模板 [lzdych]
1.0 - (2009-06-16)
初始发布