我正在为公共网站指定构建/购买权衡,并且已经达到了一个相当有趣的途径。
该网站的部分设计是将评论与一组明显具有自己IDss的不同“项目”相结合。 (即/食谱/ 23或设备/ 16等等)。
最初,我已经指定了带标签的评论系统。然而,项目发起人已经回来询问是否很容易将Disqus纳入混合。我之前使用过Joomla(从未在.NET中)并且认为这将是一个好主意,因为默认情况下,评论会通过常用的社交网络媒体自动分配。
在ASP.NET MVC上设置Disqus的实现是否相当轻松无缝运行? ASP.NET MVC中是否有教程或者如何使用Disqus的解决方案?到目前为止,我见过this example并且read the documentation。
答案 0 :(得分:15)
很明显,Disqus有一个很棒的nuget包。
Install-Package Disqus.Helper
然后就像在你的视图,部分或部分视图中粘贴它一样简单......
@Disqus {
Disqus.Initialize("YourForumShortName")
}
@Discus.ShowComments("PageIdentifierOfYourChoice")
答案 1 :(得分:6)
我选择使用异步JavaScript加载方法(而不是使用完整的API方法)。这是在ASPNET MVC中使用它的简单方法(它也适用于ASP.NET):
<!-- add the div to receive the comments via ajax -->
<div id="disqus_thread"></div>
<!-- the required javascript link to disqus -->
<script type="text/javascript">
/* * * CONFIGURATION VARIABLES: EDIT BEFORE PASTING INTO YOUR WEBPAGE * * */
var disqus_shortname = 'mydisqusname';
// Question pour XWiki : ici il faut que je configure un identifier
// c'est comme un sujet de Mail. Il faudrait que je mette par exemple
// l'url de la page XWiki afin que les commentaires soient regroupes
// ensemble par article. Bref est ce que vous pouvez me mettre un ID ?
var disqus_identifier = 'comments-league-<%= Html.Encode(Model.ID) %>';
var disqus_url = '<%= HttpContext.Current.Request.Url %>';
// using disqus_developer = 1 helps to debug to localhost etc..
var disqus_developer = 1;
/* * * DON'T EDIT BELOW THIS LINE * * */
(function() {
var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
dsq.src = 'http://' + disqus_shortname + '.disqus.com/embed.js';
(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
})();
</script>
这就是它的全部内容。
答案 2 :(得分:3)
如果您可以使用disqus品牌,那么javascript API调用就是您的选择。如果您需要进行更深入的集成 - 或者需要做一些事情,比如确保您的评论与您的网站保持一致 - 您可能需要查看我写的名为disqussharp的小库 - 它是一个相当完整的包装器v 2.1的disqus API,可以用于很多事情。
答案 3 :(得分:2)
以下是针对Disqus和Disqus的extesion方法的副本:
首先,Disqus帮手(向PieterG致敬):
/// <summary>
/// Display Comments for Post
/// </summary>
/// <param name="html"></param>
/// <param name="postIdentifier"></param>
/// <returns></returns>
public static MvcHtmlString DisqusScript(this HtmlHelper html, string postIdentifier)
{
var commentsBuilder = new StringBuilder();
var id = Config.DisqusId; // get the Disqus id from config file
var devMode = Config.DevMode; // get the devmode ('0' or '1') from config file
commentsBuilder.Append("<div id=\"disqus_thread\"></div>");
commentsBuilder.Append("<script type=\"text/javascript\">");
commentsBuilder.Append("var disqus_shortname = '" + id + "';");
commentsBuilder.Append("var disqus_identifier = '" + postIdentifier + "';");
commentsBuilder.Append("var disqus_url = '" + HttpContext.Current.Request.Url + "';");
commentsBuilder.Append("var disqus_developer = '" + devMode + "';");
/* * * DON'T EDIT BELOW THIS LINE * * */
commentsBuilder.Append("(function () {");
commentsBuilder.Append("var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;");
commentsBuilder.Append("dsq.src = 'http://" + id + ".disqus.com/embed.js';");
commentsBuilder.Append("(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);");
commentsBuilder.Append("})();");
commentsBuilder.Append("</script>");
commentsBuilder.Append("<noscript>");
commentsBuilder.Append("Please enable JavaScript to view the <a href=\"http://disqus.com/?ref_noscript\">comments");
commentsBuilder.Append("powered by Disqus.</a>");
commentsBuilder.Append("</noscript>");
return MvcHtmlString.Create(commentsBuilder.ToString());
}
然后是strongdebate版本:
/// <summary>
/// Display Comments for Post
/// </summary>
/// <param name="html"></param>
/// <param name="postIdentifier"></param>
/// <returns></returns>
public static MvcHtmlString IntenseDebateScript(this HtmlHelper html, string postIdentifier)
{
var commentsBuilder = new StringBuilder();
var id = Config.IntenseDebateId; // get the IntenseDebate id from config file
// js variables for embedded wrapper script
commentsBuilder.Append("<script type=\"text/javascript\">");
commentsBuilder.Append("var idcomments_acct = '" + id + "';");
commentsBuilder.Append("var idcomments_post_id = '" + postIdentifier + "';");
commentsBuilder.Append("var idcomments_post_url = '" + HttpContext.Current.Request.Url + "';");
commentsBuilder.Append("</script>");
/* * * DON'T EDIT BELOW THIS LINE * * */
commentsBuilder.Append("<script type=\"text/javascript\" ");
commentsBuilder.Append("src = 'http://www.intensedebate.com/js/genericCommentWrapperV2.js'>");
commentsBuilder.Append("</script>");
// add the target span for the comments
commentsBuilder.Append("<span id='IDCommentsPostTitle' style='display:none'></span>");
commentsBuilder.Append("<noscript>");
commentsBuilder.Append("Please enable JavaScript to view the IntenseDebate comments");
commentsBuilder.Append("</noscript>");
return MvcHtmlString.Create(commentsBuilder.ToString());
}
在任何一种情况下的使用:
// for intensedebate
<%=Html.IntenseDebateScript("comments-id-that-i-can-use") %>
//and for disqus
<%=Html.DisqusScript("another-comments-id-that-i-can-use") %>
...享受