Plone - 覆盖另一个产品的skins.xml

时间:2012-11-05 07:05:07

标签: plone zope

在使用Plone时,我需要使用图像映射。所以我在我的版本中添加了this产品。但是,我注意到我无法在我的应用程序中使用该产品。经过调查,我注意到这个特定的产品已经指定了要使用的特定主题,即plone默认主题。

以下是产品的skins.xml:

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

 <object name="zopyx_tinymceplugins_imgmap"
    meta_type="Filesystem Directory View"
    directory="zopyx.tinymceplugins.imgmap:skins/zopyx_tinymceplugins_imgmap"/>

 <skin-path name="Plone Default">
  <layer name="zopyx_tinymceplugins_imgmap"
     insert-after="custom"/>
 </skin-path>
 <skin-path name="Sunburst Theme">
  <layer name="zopyx_tinymceplugins_imgmap"
     insert-after="custom"/>
 </skin-path>

</object>

现在我的应用程序有一个特定的主题,即MyCustomTheme。当我激活它时,我无法使用插件产品的功能,但当我恢复到Plone默认主题时,它可以正常工作。我推断的是来自该特定产品中主题的硬编码。

如何解决此问题以确保MyCustomTheme始终能够使用该产品?我正在考虑编辑我的skins.xml文件并将该产品包含为依赖项。

更新:该产品的作者终于修复了该错误。 0.3.2产品的最新版本现在可以适用于所有皮肤。

1 个答案:

答案 0 :(得分:2)

您需要将相同的图层(zopyx_tinymceplugins_imgmap)添加到您自己的主题中;它不依赖于默认皮肤,但作者忘记添加通配符定义以使用所有皮肤注册图层。

如果您已经拥有自己主题的skins.xml文件,只需向其添加相同的图层定义:

 <skin-path name="Your Theme Name">
  <layer name="zopyx_tinymceplugins_imgmap"
     insert-after="custom"/>
  <!-- your other skin layer definitions -->
 </skin-path>

确保将此产品的通用设置配置文件添加到您自己的配置文件的medadata.xml依赖项中:

<dependencies>
    <dependency>profile-zopyx.tinymceplugins.imgmap:default</dependency>
    <!-- any other dependencies -->

</dependencies>

再次运行您的设置配置文件。