1

假设我有一个基本 XMLUI 主题/Mirage1和另一个主题/Mirage1-green,并且/Mirage1-red. 我怎样才能做到这一点Mirage1-green并且Mirage1-red不必拥有所有 XSL 代码和逻辑的副本,而只需拥有 green.xsl、green.js 和 green.css,然后另一个主题有 red.xsl, red.js 和 red.css?

我这样做的目标是,我可以对基础主题 Mirage1 进行错误修复和其他改进,而不必对其他主题也重复这些修复。

我认为该解决方案涉及Mirage1-green主题的 sitemap.xmap 以导入 Mirage1-green/xsl/green.xsl,然后导入../Mirage1/aspect/artifactbrowser/common.xsl等等,但非常感谢代码链接或其他指南。

4

2 回答 2

1

以下内容仅适用于基于最近贡献的 Mirage 2 主题的 XMLUI 主题:

基本 Mirage 2 主题的继承是隐式和自动的。

  1. 在 src/dspace/modules/xmlui-mirage2/src/main/webapp/themes 中新建一个主题文件夹
  2. 您放入其中的任何文件都将覆盖 Mirage 2 原始文件。

在 DSpace 主分支中放置了一个示例来说明这一点:

https://github.com/DSpace/DSpace/tree/master/dspace/modules/xmlui-mirage2/src/main/webapp/themes/Mirage2/styles

此文件夹当前包含一个 _style.scss 文件,覆盖了来自 Mirage 2 源文件的样式文件夹中的 _style.scss:

https://github.com/DSpace/DSpace/tree/master/dspace-xmlui-mirage2/src/main/webapp

于 2014-09-03T12:11:02.140 回答
1

我们已经实施了一个类似的解决方案,我们可以轻松推出一个新的自定义主题,只需进行最少的更改。

我们倾向于为每个集合自定义标题图像和链接目标、页脚文本和一些 CSS 样式。

  • 创建 MirageBase.xsl 和 MirageBase.css
    • 应在 MirageBase.xsl 中应用对样式表逻辑的全局更改
  • Mirage1 站点地图指向 Mirage1 xsl、css、js
    • Mirage1 xsl 执行 xsl:import MirageBase.xsl
    • Mirage1 css 导入 MirageBase.css
  • Mirage2 站点地图指向 Mirage2 xsl、css、js
    • Mirage2 xsl 执行 xsl:import of MirageBase.xsl
    • Mirage2 css 导入 MirageBase.css
  • Mirage3 站点地图指向 Mirage3 xsl、css、js
    • Mirage3 xsl 执行 xsl:import MirageBase.xsl
    • Mirage3 css 导入 MirageBase.css

这是我们的自定义集合样式表之一的示例。

<xsl:stylesheet xmlns:i18n="http://apache.org/cocoon/i18n/2.1"
    xmlns:dri="http://di.tamu.edu/DRI/1.0/" xmlns:mets="http://www.loc.gov/METS/"
    xmlns:dc="http://purl.org/dc/elements/1.1/"     xmlns:dim="http://www.dspace.org/xmlns/dspace/dim"
    xmlns:mods="http://www.loc.gov/mods/v3" xmlns:xlink="http://www.w3.org/TR/xlink/"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">

    <xsl:import href="../non-GU-lib.xsl" />
    <xsl:output indent="yes" />

    <xsl:variable name="header-logo"
       select="concat($context-path,'/themes/GU-base-theme/non-GU-lib/ir/images/ir-logo.png')" />
    <xsl:variable name="header-logo-link">
        http://library.georgetown.edu/ir/home
    </xsl:variable>
    <xsl:variable name="teaser-image"
        select="concat($theme-path,'/images/ir-teaser.jpg')" />

</xsl:stylesheet>
于 2014-09-02T22:06:23.820 回答