问题
I have the following Facebook iframe as part of the template:
<iframe allowTransparency='true' expr:src='"http://www.facebook.com/plugins/like.php?href=" + data:post.url + "&layout=standard&show_faces=false&width=100&action=like&font=arial&colorscheme=light"' frameborder='0' scrolling='no' style='border:none; overflow:hidden; width:576px; height:24px;'/>
The main feature is that it uses the Blogspot variable data:post.url
as the link that the user can "Like". Unfortunately recently blogspot decided to redirect people to their local blospot addresses, so if you open example.blogspot.com
in the UK, you will be redirected to example.blogspot.co.uk
, and you can't see any likes of people from outside of the island.
The obvious fix is to make everyone like the main .com page, so I created a script to generate this iframe dynamically:
<script type="text/javascript">
document.write("<iframe allowTransparency='true' frameborder='0' scrolling='no' src='http://www.facebook.com/plugins/like.php?href=");
var thisUrl = "data:post.url";
var beginning = thisUrl.indexOf("blogspot")+9;
var end = thisUrl.indexOf("/", 15);
document.write(thisUrl.substring(0, beginning));
document.write("com");//change regional url to com
document.write(thisUrl.substring(end));
document.write("&layout=standard&show_faces=false&width=100&action=like&font=arial&colorscheme=light' style='border:none; overflow:hidden; width:576px; height:24px;'></iframe>");
</script>
To make Blogspot accept it I had to html-ecape bits of it, but I can't get the variable data:post.url
substituted to a correct value - it stays literally what it is.
回答1:
To show Blogger variables you need to use <data:blog.varName/>
.
So, in your case, instead of:
var thisUrl = "data:post.url";
You need to use:
var thisUrl = "<data:post.url/>";
UPD 1: if you want to use page url in head section, use <data:blog.url/>
not <data:post.url/>
.
UPD 2: but why you don't use window.location
?
回答2:
Grzenio.
This does not directly answer your question but you can use
Replace data:post.url
with data:post.canonicalUrl
This will mean that all your likes etc will use the .com version of your blog.
So you should not need to use any javascript etc.
来源:https://stackoverflow.com/questions/11001586/how-can-i-have-a-script-in-blogspot-template-that-uses-the-blogspot-variables