2011-11-28 91 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> 

,你想修改的屬性。 :)