我在一些使用XMLUI的存储库中看到,而不是在首页中找到的默认Communities in DSpace
,它们正在显示特色出版物。我想知道如何实现这一目标以及如何选择特色出版物清单?
这方面的一个很好的例子是WorldBank's Open Knowledge Repository。
答案 0 :(得分:1)
最好只联系运行该特定存储库的人员 - 我确信有很多不同的方法可以实现这类事情。
One of "my" DSpace instances有一个特色项目(“本周阅读”)。它是作为自定义XMLUI方面实现的。当前选择只存储在DSpace目录中的文本文件中;我们故意保持它简单(即没有数据库参与),因为没有必要例如保留以前特色项目的历史记录。
方面大致如下:
(1)使用子类org.dspace.app.xmlui.cocoon.AbstractDSpaceTransformer
的类将特色项信息添加到主页DRI。在其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 /句柄,第二个屏幕预览项目并确认选择)并向管理员添加一个条目侧边栏的一部分,所以回购员工可以访问这些屏幕。
方面有自己的sitemap.xmap,用于引入主页的转换器,并使用方面的流程图引导工作流通过管理屏幕。如果您不需要管理员屏幕(例如,如果您很乐意在特色项目更改时编辑文件),您的站点地图只需要在主页上提取变换器:
<!-- Match dspace home page -->
<map:match pattern="">
<map:transform type="ReadOfWeekTransformer"/>
<map:serialize type="xml"/>
</map:match>
它是在GitHub下的3条款BSD: