关于 xslt:在 DSpace 中使用 xsl 覆盖 DRI 模板

Over-riding DRI Templates using xsl in DSpace

我正在使用 DSpace 4.2 xmlui Mirage 主题。我想从搜索结果页面中隐藏社区和收藏集。

enter

1
<list id="aspect.discovery.SimpleSearch.list.comm-coll-result-list" n="comm-coll-result-list">

所以我尝试覆盖主题的 xsl 文件中的模板。

1
2
3
<xsl:template match="dri:list[@id='aspect.discovery.SimpleSearch.list.comm-coll-result-list']">
<!-- Over ride / remove the recent submissions box-->
</xsl:template>

但页面中没有反映任何变化。我在这里做错了吗?通过覆盖生成它的相应 div 的模板,我能够以类似的方式隐藏默认搜索框。我注意到我要隐藏的 list 项目包含在另一个 div 中。除非它的标签是 div?

否则不可能覆盖 DRI 元素


您还可以在 [dspace]/config/spring/api/discovery.xml 中添加默认过滤器查询。

Default filter queries are applied on all search operations & sidebarfacet clicks. One useful application of default filter queries is ensuring that all returned results are items. As a result, subcommunities and collections that are returned as results of the search operation, are filtered out.

这里的相关行,注意默认是禁用的。取消注释以使其正常工作。

1
2
3
4
<property name="defaultFilterQueries">
<list>
    <value>search.resourcetype:2</value>
</list>

希望有帮助。

更新

复制:

1
2
3
4
5
<property name="defaultFilterQueries">
    <list>
      <value>search.resourcetype:2</value>
    </list>
<property>

<bean id="homepageConfiguration" class="org.dspace.discovery.configuration.DiscoveryConfiguration" scope="prototype"> 中,因为它会覆盖此注释中所述的 defaultConfiguration。


集合和社区列表结果由以下 XSLT 显示:https://github.com/DSpace/DSpace/blob/master/dspace-xmlui/src/main/webapp/themes/dri2xhtml/structural.xsl# L3616-L3635

要通过 XSLT 更改显示,请尝试构建您自己的模板代码。

1
2
3
4
5
6
7
8
<xsl:template name="collectionSummaryList">
    <xsl:param name="handle"/>
    <xsl:param name="externalMetadataUrl"/>

    <xsl:variable name="metsDoc" select="document($externalMetadataUrl)"/>

    ...
</xsl:template>

如果您完全禁止显示这些结果,则可能会使您的分页计数不可靠。从 SOLR 搜索结果中隐藏社区/集合结果可能更有意义。