在Orchard视图中显示Facebook评论插件

时间:2014-03-10 11:24:08

标签: facebook-javascript-sdk orchardcms

我为contentitem的详细信息页面创建了一个备用视图。

在此视图中,我尝试将facebook commentsplugin添加到此视图中。添加了必要的javascript包括插件工作。

这有效

<div class="fb-comments" data-href="http://*************/@(Model.Header.Parent.ContentItem.AutoroutePart.Path)" data-numposts="1" data-colorscheme="light"></div>

这不是

<div class="fb-comments" data-href="@(Model.Header.Parent.ContentItem.AutoroutePart.Path)" data-numposts="1" data-colorscheme="light"></div>

有没有办法在Orchard Alternate View中获取完整的url,如Request.Url.ToString()?

2 个答案:

答案 0 :(得分:1)

可以使用ViewContext

读取
<div class="fb-comments" data-href="@(ViewContext.HttpContext.Request.Url.ToString())" data-numposts="1" data-colorscheme="light"></div>

答案 1 :(得分:0)

我的评论插件和类似按钮现在正在使用jQuery中的以下workarround

<div class="fb-comments" data-href="@(Model.Header.Parent.ContentItem.AutoroutePart.Path)" data-numposts="1" data-colorscheme="light"></div>


<div id="fb-root"></div>
<script>
  $(function () {
    if ($('.fb-comments, .fb-like').length > 0) {
        $('.fb-comments, .fb-like').each(function () {
            var href = location.protocol + "//" + location.hostname + "/" + $(this).data("href");
            $(this).attr("data-href", href);
        }).promise().done(includeFacebook);
    } else {
        includeFacebook();
    }

});

function includeFacebook() {
    (function (d, s, id) {
        var js, fjs = d.getElementsByTagName(s)[0];
        if (d.getElementById(id)) return;
        js = d.createElement(s); js.id = id;
        js.src = "//connect.facebook.net/nl_NL/all.js#xfbml=1&appId=##########";
        fjs.parentNode.insertBefore(js, fjs);
    } (document, 'script', 'facebook-jssdk'));
}