How can I have a script in Blogspot template that uses the Blogspot variables?

∥☆過路亽.° 提交于 2019-12-11 13:09:51

问题


I have the following Facebook iframe as part of the template:

<iframe allowTransparency='true' expr:src='&quot;http://www.facebook.com/plugins/like.php?href=&quot; + data:post.url + &quot;&amp;layout=standard&amp;show_faces=false&amp;width=100&amp;action=like&amp;font=arial&amp;colorscheme=light&quot;' 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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!