如何覆盖发现搜索结果

时间:2015-08-30 07:27:37

标签: xslt-1.0 dspace

我正在处理的存储库的一个要求是从用户界面获得Advanced Search选项。从DSpace 4开始,Discovery分面/过滤搜索&默认情况下,如here所述启用浏览,我只是在导航中添加一个链接,指向Advanced Search链接到http://myrepository.org/discover。现在,我的目标是在用户点击Advanced Search链接时取消搜索结果。

如何覆盖搜索结果,如果没有查询字符串(例如,如果用户直接进入/discover页面并且未选择任何方面),它将仅显示在图片中下面没有搜索结果和Now showing items ...以及分页div。

我正在使用 DSpace版本5.3幻影2主题

enter image description here

这就是我的尝试:

<xsl:template match="dri:list[@id='aspect.discovery.SimpleSearch.list.search-results-repository']">
    <xsl:variable name="query-string" select="/dri:document/dri:meta/dri:pageMeta/dri:metadata[@element='request'][@qualifier='queryString']"/>
    <xsl:if test="$query-string!=''">
        <xsl:apply-templates />
    </xsl:if>
</xsl:template>

上面的代码总是会抑制搜索结果,无论我是否有查询字符串。

修改

我在答案中使用的模板匹配有问题。排序选项的样式已被删除。

enter image description here

有人可以帮助我改进我的代码,以便它不会删除排序选项的样式吗?默认排序选项应如下所示:

enter image description here

我想知道为什么使用该模板匹配删除了排序选项的样式。如果我使用<xsl:apply-templates/><xsl:apply-templates select="."/>代替<xsl:copy-of select="."/>,则不会返回我想要实现的结果。

任何建议都将不胜感激。提前谢谢。

1 个答案:

答案 0 :(得分:1)

经过多次尝试template match,我终于实现了我想要展示的内容。这是我用来实现目标的template match

<xsl:template match="dri:div[@id='aspect.discovery.SimpleSearch.div.search-results']">
    <xsl:if test="contains(@pageURLMask,'query') or contains(@pageURLMask,'filter')">
        <xsl:copy-of select="."/>
    </xsl:if>
</xsl:template>

我不知道,也不确定这是否是万无一失的。我直接转到/discover页面时对此进行了测试,未显示搜索结果,我也尝试点击搜索按钮而不在搜索表单中输入任何值。

这个答案有点问题。请参阅我上面的更新帖子。

这是解决我在排序选项样式方面存在问题的代码。

<xsl:template match="dri:div[@id='aspect.discovery.SimpleSearch.div.search-results']">
  <xsl:choose>
    <xsl:when test="contains(@pageURLMask,'query') or contains(@pageURLMask,'filter')">
      <xsl:apply-templates select="dri:div[@id='aspect.discovery.SimpleSearch.div.masked-page-control']/node()"/>
        <xsl:copy>
                <xsl:apply-templates select="node()|@*"/>
            </xsl:copy>
    </xsl:when>
    <xsl:otherwise>
      <xsl:call-template name="no-search-results"/>
    </xsl:otherwise>
  </xsl:choose>
</xsl:template>

<xsl:template name="no-search-results" match="dri:div[@id='aspect.discovery.SimpleSearch.div.masked-page-control']"/>