如何在Blogger第三方主题中强制加载Disqus评论

时间:2017-08-29 08:56:11

标签: javascript jquery blogger disqus

我有一个博客,其中我安装了第三方主题。 我的博客是http://www.rawdevart.com/
我没有计划改变主题,因为这个想法及其构建方式 匹配我的网站内容。
我想问的是,有时候Disqus评论根本没有加载。即使我刷新页面也不会加载。

Disqus not loading

我想要一个代码在检查它没有加载后强制它重新加载。这不仅发生在Disqus上,也发生在AddThis共享按钮上。我在这两个脚本中添加了async='async',让它加载了一点。虽然它增加了它加载的概率,但仍然没有改变它有时不加载的事实。当有时没有加载时,无论是刷新后有时加载还是刷新后都不会加载(除非我复制链接并在浏览器中打开一个新选项卡或窗口并再次打开页面)。

博客主题也已安装了bootstrapper。 所以我不得不用comment_picker包裹<div class='col-md-12 col-sm-12 col-xs-12' id='disqus_thread'> 顺便说一下,id='disqus_thread'是我随机放置的东西,但它确实增加了它加载的概率。

以下是小部件comment_picker

中的disqus和Blog1的代码

评论选择器

<b:includable id='comment_picker' var='post'>
 <div class='col-md-12 col-sm-12 col-xs-12' id='disqus_thread'>
  <b:if cond='data:post.commentSource == 1'>
   <b:include data='post' name='iframe_comments'/>
    <b:elseif cond='data:post.showThreadedComments'/>
      <b:include data='post' name='threaded_comments'/>
    <b:else/>
  <b:include data='post' name='comments'/>
 </b:if>
 </div>
</b:includable>

Disqus

<b:widget id='HTML1' locked='false' title='Disqus for rawmangaread' type='HTML' version='1'>
  <b:widget-settings>
   <b:widget-setting name='content'><![CDATA[<!-- Disqus Widget -->]]>
   </b:widget-setting>
  </b:widget-settings>
<b:includable id='main'>
<script asyn='async' type='text/javascript'>
 var disqus_shortname = &#39;rawmangaread&#39;;
 var disqus_blogger_current_url = &quot;<data:blog.canonicalUrl/>&quot;;
 if (!disqus_blogger_current_url.length) {
   disqus_blogger_current_url = &quot;<data:blog.url/>&quot;;
 }
 var disqus_blogger_homepage_url = &quot;<data:blog.homepageUrl/>&quot;;
 var disqus_blogger_canonical_homepage_url = &quot;
 <data:blog.canonicalHomepageUrl/>&quot;;
 </script>
 <b:if cond='data:blog.pageType == &quot;item&quot;'>
 <style type='text/css'>
 #comments {display:none;}
 </style>
 <script type='text/javascript'>
     (function() {
      var bloggerjs = document.createElement(&#39;script&#39;);
      bloggerjs.type = &#39;text/javascript&#39;;
      bloggerjs.async = true;
      bloggerjs.src = &#39;//&#39; + disqus_shortname + &#39;.disqus.com/blogger_item.js&#39;;
     (document.getElementsByTagName(&#39;head&#39;)[0] || 
    document.getElementsByTagName(&#39;body&#39;)[0]).appendChild(bloggerjs);
   })();
</script>
</b:if>
<style type='text/css'>
.post-comment-link { visibility: hidden; }
</style>
<script type='text/javascript'>
(function() {
var bloggerjs = document.createElement(&#39;script&#39;);
bloggerjs.type = &#39;text/javascript&#39;;
bloggerjs.async = true;
bloggerjs.src = &#39;//&#39; + disqus_shortname + &#39;.disqus.com/blogger_index.js&#39;;
(document.getElementsByTagName(&#39;head&#39;)[0] ||document.getElementsByTagName(&#39;body&#39;)[0]).appendChild(bloggerjs);
})();
</script>
</b:includable>

链接到我的完整主题: https://pastebin.com/WDMMZFfh

您可以花一些时间,但请尝试解决它。​​

1 个答案:

答案 0 :(得分:1)

Disqus窗口小部件必须在Blog1窗口小部件之后才能使用id='comments'来检测div,并且因为您的主题未在布局页面中显示Blog1窗口小部件,您可以删除Disqus窗口小部件并在<b:widget id='Blog1'>...</b:widget>

之后直接粘贴