2011-11-28 90 views
1

我正在使用Plone 3,并且正在尝试覆盖默认JavaScript文件之一,即table_sorter.js。Plone 3:覆盖默认的Javascript文件

在我的产品的浏览器目录,我创建了一个目录“的JavaScript”(只是为了保持组织的事情),那么登记的目录作为的ressource,在configure.zcml中:

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

其中“myProduct的“是自我解释。 然后在jssregistry.xml,我注册并下令JavaScript文件:

<javascript id="++resource++myproduct.javascripts/table_sorter.js" 
    enabled="True" 
    cookable="False" 
    inline="False" 
    insert-after="jquery.js" /> 

哪里table_sorter.js是JavaScript文件,我需要重写的名称。

我需要重写文件的原因是因为默认没有办法告诉用户表是否可以排序,直到它被点击。我需要在表头默认包含图标。

我按照上述步骤,但它似乎并没有工作。我不知道我要出错的地方。任何帮助将不胜感激。

回答

2

您缺少一般设置导入步骤。文件skins.xml添加到您的GS与此代码的程序:

<?xml version="1.0"?> 
<object name="portal_skins" allow_any="False" cookie_persistence="False"> 

    <object name="plonetheme_mytheme_js" 
     meta_type="Filesystem Directory View" 
     directory="your.product:skins/plonetheme_mytheme_js"/> 

    <skin-path name="*"> 
     <layer name="plonetheme_mytheme_js" 
      insert-after="custom"/> 
    </skin-path> 

</object> 

之后,rembember重新安装你的产品,以应用新的GS步骤

注:我给另一个答案简单因为注释中的代码不可读。查看@Martijn Pierters对最初部分的回答(和评论)。

1

您不覆盖原来的JavaScript文件,只添加一个新文件。

您可以在这里做两个不同的东西:

  1. 从portal_javascript删除原始table_sorter.js:

    <javascript id="table_sorter.js" remove="true" /> 
    
  2. 因为原table_sorter.js文件服务器通过皮肤层,您可以在自己的皮肤图层中放置一个具有相同名称的新文件来覆盖原始文件。

+0

谢谢@Martijn。但是,我仍然无法完成它的工作。我在皮肤中创建了一个文件夹来保存重写的JavaScript文件。我还添加了对skins.zcml文件夹的引用,如下所示:''。你知道我要去哪里吗?感谢你目前的帮助。 – Frankline

0

考虑到您已将您的自定义JavaScript文件放入您的静态目录中,请执行以下操作。

在文件中 “您/应用/型材/默认/ jsregistry.xml”

<?xml version="1.0"?> 
<object name="portal_javascripts"> 
    <javascript id="table_sorter.js" remove="True" enabled="False" /> 

    <javascript cacheable="True" compression="none" cookable="True" 
       enabled="True" expression="" 
       id="++resource++your.app/path/to/customised/script/table_sorter.js" inline="False"/> 
</object> 

,你想修改的属性。 :)