Plon 3:覆盖默认的 Javascript 文件

发布于 2024-12-18 11:10:05 字数 754 浏览 2 评论 0原文

我正在使用 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 文件的名称。

我需要覆盖该文件的原因是因为默认情况下无法告诉用户表是否可排序,直到单击它为止。默认情况下,我需要在表标题上包含图标。

我已按照上述步骤操作,但似乎不起作用。我不知道我哪里错了。任何帮助将不胜感激。

I am using Plone 3 and currently trying to override one of the default javascript files i.e. table_sorter.js.

Under the browser directory of my product, I created a directory "javascripts" (just to keep things organized), then registered the directory as a ressource, in configure.zcml:

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

Where "myproduct" is self explanatory.
Then in jssregistry.xml, I registered and ordered the javascript files:

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

Where table_sorter.js is the name of the javascript file that I need to override.

The reason I need to override the file is because the default has no way of telling the user whether a table is sortable or not until it is clicked on. I need to include icons on the table header by default.

I have followed the above steps but it does not seem to work. I have no idea where I'm going wrong. Any help will be highly appreciated.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

桃酥萝莉 2024-12-25 11:10:05

您缺少通用设置导入步骤。使用以下代码将文件 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 的初始部分的答案(和评论)。

You are missing the generic setup import step. Add a file skins.xml to your gs profile with this code:

<?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>

After that, rembember to reinstall your product in order to apply your new gs step

Note: I'm giving another answer simply because code in comments isn't readable. Look at the @Martijn Pierters 's answer (and comments) for the initial part.

尹雨沫 2024-12-25 11:10:05

您并没有覆盖原始 JavaScript 文件,只是添加了一个新文件。

您可以在这里执行两种不同的操作:

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

    >
    
  2. 由于原来的table_sorter.js文件是通过皮肤层来服务的,所以你可以在自己的皮肤层中放置一个同名的新文件来实现覆盖原来的。

You are not overriding the original JavaScript file, only adding a new one.

You can do two different things here:

  1. Remove the original table_sorter.js from portal_javascript:

    <javascript id="table_sorter.js" remove="true" />
    
  2. Because the original table_sorter.js file is server through a skin layer, you can put a new file with the same name in your own skin layer to override the original.

说好的呢 2024-12-25 11:10:05

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

在文件“your/app/profiles/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>

根据需要修改属性。 :)

Considering that you have already placed your customised javascript file into your static directory, do as follows.

In file "your/app/profiles/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>

Modify the attributes as you wish. :)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文