DSpace首页的特色出版物

Featured publications in DSpace front page

我在某些使用 XMLUI 的存储库中看到,它们显示的是特色出版物,而不是首页中的默认 Communities in DSpace。我想知道如何实现这一目标以及如何选择特色出版物列表?

一个很好的例子是 WorldBank's Open Knowledge Repository

最好只联系特定存储库的人员 运行 - 我确信有很多不同的方法可以实现这种事情。

One of "my" DSpace instances 有一个特色项目 ("Read of the week")。它是作为自定义 XMLUI 方面实现的。当前选择只是存储在 DSpace 目录中的一个文本文件中;我们故意保持简单(即不涉及数据库),因为不需要保留以前特色项目的历史记录。

方面大致是这样的:

(1) 将特色项目信息添加到主页 DRI -- 使用 class 子 class 是 org.dspace.app.xmlui.cocoon.AbstractDSpaceTransformer。在其 addBody 方法中,转换器添加了一个指向项目的引用集:

    // reading the featured item's handle from the file on disk,
    // then retrieve the item by handle (instance of org.dspace.content.Item)

    if (item != null) {
        Division readOfWeekHome = body.addDivision("read-of-week-home", "primary repository");
        Division readOfWeek = readOfWeekHome.addDivision("read-of-week", "secondary read-of-week");
        readOfWeek.setHead(READ_OF_THE_WEEK);
        ReferenceSet refset = readOfWeek.addReferenceSet("read-of-week-set", ReferenceSet.TYPE_SUMMARY_LIST, null, "read-of-week");
        refset.addReference(item);
    }

这最终出现在主页 DRI 中,如下所示:

<div id="nz.ac.lconz.irr.dspace.app.xmlui.aspect.readofweek.ReadOfWeekTransformer.div.read-of-week-home" rend="primary repository" n="read-of-week-home">
    <div id="nz.ac.lconz.irr.dspace.app.xmlui.aspect.readofweek.ReadOfWeekTransformer.div.read-of-week" rend="secondary read-of-week" n="read-of-week">
        <head>Read of the Week</head>
        <referenceSet id="nz.ac.lconz.irr.dspace.app.xmlui.aspect.readofweek.ReadOfWeekTransformer.referenceSet.read-of-week-set" rend="read-of-week" n="read-of-week-set" type="summaryList">
            <reference repositoryID="10292" type="DSpace Item" url="/metadata/handle/123456789/1234/mets.xml"/>
        </referenceSet>
    </div>
</div>

不记得主题XSL中有没有专门的代码来渲染这个参考集;我相信它只是重新使用了其他 summaryList 参考集(即最近添加的列表)的呈现,但是有一点自定义 CSS 来增加字体大小。

(2) 提供管理屏幕让回购人员选择当前推荐的项目(第一个屏幕输入项目 id/handle,第二个屏幕预览项目并确认选择)并添加一个进入侧边栏的管理部分,以便回购人员可以访问这些屏幕。

方面有自己的 sitemap.xmap 来引入主页的转换器,并使用方面的流程脚本通过管理屏幕引导工作流。如果您不需要管理屏幕(例如,如果您很乐意在特色项目更改时编辑文件),您的站点地图只需要在主页上引入转换器:

        <!-- Match dspace home page -->
        <map:match pattern="">
            <map:transform type="ReadOfWeekTransformer"/>
            <map:serialize type="xml"/>
        </map:match>

它在 GitHub 3-Clause BSD 下: