Today +Google published a +Google+ based commenting system on +Blogger. This is what I expected so long. I hate when I need to read minified JavaScript but now I could get more stamina to this “awesome“ digging. Finally I found the call with parameters ;)
Call
gapi.comments.render(
target_id:string, // id of the container
Options:object {
href:string // url of the page
view_type:string // moderated?
first_party_property:string // BLOGGER
width:integer // wothout units (like px)
}
);
The first_party_property
property has to be BLOGGER
because when I changed that I got a cool _400 Bad Request_ error from Google. I don’t know if there are any other options but the only one options for view_type
that I know is FILTERED_POSTMOD
.
Simple way
Of course you use plusone.js
in async method. Just patch your script like this:
<script type="text/javascript">
window.___gcfg = {lang: '{{ site.lang }}'};
(function() {
function _getComputedStyle(el, cssprop){
if (el.currentStyle) {
// for IE
return el.currentStyle[cssprop];
} else if (document.defaultView && document.defaultView.getComputedStyle) {
// Any other normal brwoser (like Chrome, Firefox)
return document.defaultView.getComputedSty_e(el, "_")[cssprop];
} else {
// Try get inline style
return el.style[cssprop];
}
}
var script = document.createElement('script');
script.type = 'text/javascript';
script.async = true;
script.onload = function() {
if (gapi && gapi['comments'] && gapi.comments['render']) {
var gPlusComments = document.getElementById('gpluscomments');
gapi.comments.render(
'gpluscomments',
{
href: gPlusComments.getAttribute('data-href'),
view_type: gPlusComments.getAttribute('data-viewtype'),
first_party_property: "BLOGGER",
width: parseInt(_getComputedStyle(gPlusComments, "width", 10)
}
);
}
};
script.src = 'https://apis.google.com/js/plusone.js';
var s = document.getElementsByTagName('script')[0];
s.parentNode.insertBefore(script, s);
})();
</script>
After that you can create a simple div with data-
properties like this (for Octopress):
<div id="gpluscomments"
data-href='{{ site.url }}{{ page.url }}'
data-viewtype='FILTERED_POSTMOD'></div>
So, we have to add a href
, view_type
, first_party_property
and width
.
First and second come from the div, third is fix
(BLOGGER and later site specific string like Google API Client ID) and we
can calculate the fourth parameter.
I hope I could help you. Have you got any other solution? Please, share with me.