Plone 3: переопределение файлов Javascript по умолчанию

Я использую Plone 3 и в настоящее время пытаюсь переопределить один из файлов javascript по умолчанию, т.е. table_sorter.js.

В каталоге браузера моего продукта я создал каталог "javascripts" (просто чтобы упорядочить вещи), а затем зарегистрировал каталог как ресурс в файле 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, который мне нужно переопределить.

Причина, по которой мне нужно переопределить файл, заключается в том, что по умолчанию нет способа сообщить пользователю, сортируется ли таблица или нет, пока она не нажата. Мне нужно включить значки в заголовок таблицы по умолчанию.

Я следовал за вышеупомянутыми шагами, но это, кажется, не работает. Я понятия не имею, где я иду не так. Любая помощь будет высоко оценена.

3 ответа

Решение

Вам не хватает общего шага импорта настроек. Добавьте файл 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>

После этого вспомните, чтобы переустановить продукт, чтобы применить новый шаг GS

Примечание: я даю другой ответ просто потому, что код в комментариях не читается. Посмотрите ответ @Martijn Pierters (и комментарии) для начальной части.

Вы не переопределяете исходный файл JavaScript, а только добавляете новый.

Вы можете сделать две разные вещи здесь:

  1. Удалите оригинальный файл table_sorter.js из portal_javascript:

    <javascript id="table_sorter.js" remove="true" />
    
  2. Поскольку исходный файл table_sorter.js является сервером через слой обложки, вы можете поместить новый файл с тем же именем в свой слой обложки, чтобы переопределить оригинал.

Учитывая, что вы уже поместили свой настроенный файл javascript в статический каталог, сделайте следующее.

В файле "ваше / приложение /profile /default/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>

Измените атрибуты, как вы хотите.:)

Другие вопросы по тегам