【问题标题】:DSpace with links to social media带有社交媒体链接的 DSpace
【发布时间】:2018-01-02 04:24:49
【问题描述】:

在新西兰的 Massey UniversityUniversity of Waikato 的 DSpace 存储库中,有一些按钮可以与 Twitter、Facebook 和其他社交媒体共享存储库中文档的链接。
两个网站也都有一个带有 Twitter 推文的窗口。
我希望你们当中有人想解释这两种功能是如何添加到 DSpace Mirage 2 主题中的。

【问题讨论】:

    标签: facebook twitter dspace


    【解决方案1】:

    我们在 DSpace 安装中使用 addThis 服务:http://www.addthis.com/

    该服务允许您自定义网站的共享选项。

    对于 Mirage2,我们将以下 javascript 添加到 Mirage2/xsl/core/page-structure.xsl 以将服务添加到我们的站点。该链接将包含您的配置的唯一 ID。

       <script type="text/javascript" src="//s7.addthis.com/js/300/addthis_widget.js#pubid=..."></script>        
    

    我们还向 Mirage2/styles/_style.scss 添加了一些自定义 CSS

    .container {
      padding-left: 50px;
      padding-right: 50px;
    }
    

    您可以在我们的存储库站点上进行预览:https://repository.library.georgetown.edu/

    【讨论】:

    • 我已经让它在 test-html-page 中工作了。顺便说一句,我注意到如果访问者浏览器阻止广告,社交媒体图标不会出现。我想 addThis 正在做的事情。
    【解决方案2】:

    terrywb 的回答涵盖了共享按钮方面——这正是彼得链接到的怀卡托大学存储库中使用的服务。我们在 navigation.xsl 中添加 JavaScript 而不是 page-structure.xsl,我们还添加了

    <div class="addthis_sharing_toolbox list-group" style="min-height:37.5px"></div>
    

    就在#ds-options div 的开始标记之后,符合 AddThis 嵌入说明。

    首页的推文请参考Twitter embedded timeline instructions。我相信我们通过 news-xmlui.xml 添加了一个占位符 div,然后触发 theme.xsl 中的模板,该模板拉入 JavaScript 并生成所需的 a 元素 - 下面的示例来自 Twitter 文档。

    <a class="twitter-timeline"
      href="https://twitter.com/TwitterDev"
      data-width="300"
      data-height="300">
    Tweets by @TwitterDev
    </a>
    

    【讨论】:

    • 很好:两者都能正常工作。我只需要添加一个指向 Twitter Javascript 的链接:
    【解决方案3】:

    如果您想避免像 AddThis 这样的服务跟踪您的用户,或者只是想保持简单,您可以使用简单的共享链接。添加到dspace-xmlui-mirage2/src/main/webapp/xsl/aspect/artifactbrowser/item-view.xsl这个模板:

    <xsl:template name="share-section">
        <div class="item-page-field-wrapper table hidden-print">
            <h5><i18n:text>xmlui.mirage2.itemSummaryView.ShareSection</i18n:text></h5>
    
            <xsl:variable name="url">
                <xsl:value-of select="encoder:encode(confman:getProperty('dspace.baseUrl'))" />
                <xsl:value-of select="encoder:encode('/handle/')" />
                <xsl:value-of select="encoder:encode(substring-after(/mets:METS/@OBJID,'handle/'))" />
            </xsl:variable>
    
            <a target="_blank" i18n:attr="title" title="xmlui.export.mendeley"
                    href="http://www.mendeley.com/import/?url={$url}">
                <img src="{concat($theme-path,'/images/mendeley.png')}"
                     i18n:attr="alt" alt="xmlui.export.mendeley" />
            </a>
    
            <a class="social-network-icon twitter"
               href="http://twitter.com/home/?status={$url}"
               title="Share on Twitter" target="_blank">&#xFEFF;</a>
    
            <a class="social-network-icon facebook"
               href="http://www.facebook.com/sharer.php?u={$url}"
               title="Share on Facebook" target="_blank">&#xFEFF;</a>
        </div>
    </xsl:template>
    

    Here你可以找到更多其他社交网络的分享链接。

    然后,您必须从您希望它出现的位置调用模板。例如,我们将其添加到项目元数据的第一列,位于同一文件的 &lt;xsl:template match="dim:dim" mode="itemSummaryView-DIM"&gt; 模板中。

    我们从Expando 获得图标(与社交网络共享的另一种选择,它是免费软件)。这个 CSS 是用来显示图标的:

    .social-network-icon {
      background-image: url("../images/social-networks-icons.png");
      background-repeat: no-repeat;
      background-origin: 0;
      display: inline-block;
      height: 16px;
      margin-left: 4px;
      vertical-align: middle;
      width: 16px;
    }
    
    .social-network-icon.facebook {
      background-position: -0*16px 0;
    }
    
    .social-network-icon.google-plus {
      background-position: -2*16px 0;
    }
    

    【讨论】:

    • 谢谢 Àlex。我喜欢你的方法。
    • 目前我在安装 Mirage 2 时遇到问题。希望稍后测试您的解决方案。
    猜你喜欢
    • 2014-02-24
    • 1970-01-01
    • 2017-02-26
    • 1970-01-01
    • 1970-01-01
    • 2023-02-01
    • 2015-12-13
    • 2015-11-17
    • 1970-01-01
    相关资源
    最近更新 更多