Grails和Google PlusOne

时间:2011-08-24 09:31:09

标签: grails google-plus-one

Google PlusOne代码如下所示:<g:plusone size="medium"></g:plusone>

不幸的是,在Grails世界中,“g:”是保留的。

我相信你可以修改Grails库,但我正在寻找一种更简单的方法。 我怎么能简单地要求Grails不要把这个字符串包括在内?

4 个答案:

答案 0 :(得分:3)

我会回答我自己的问题并对昆汀表示赞赏,昆汀对这个问题发表了评论,但没有写出答案(如果你发表答案,我会选择你作为正确答案)。

有一个HTML版本:

<div class="g-plusone" data-size="medium"></div>

答案 1 :(得分:1)

或者您可以在gsp文件中输出:

${'<g:plusone annotation="inline" href="http://www.anythinggoeshere_xyz.com"></g:plusone>'}

答案 2 :(得分:0)

嗯,唯一的解决方案是更改正在使用的taglib。

如果您使用的是taglib,那么您唯一必须做的就是添加一个名为namespace的静态属性,其名称为您想要的名称,如下例所示:

static namespace = google1

答案 3 :(得分:0)

taglib solution by James Williams上构建,我能够使用此taglib呈现+1按钮,我在taglib文件夹中将其命名为GooglePlusOneTagLib.grooovy:

class GooglePlusOneTagLib {

    def plusone = { attrs, body ->
        out << "<g:plusone "+(attrs.size ? "size=${attrs.size}" : "") +"></g:plusone>"
    }

    def plusoneScript = { attrs, body ->
        out << '''<script type="text/javascript">
                  (function() {
                    var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true;
                    po.src = 'https://apis.google.com/js/plusone.js';
                    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s);
                  })();
                    </script>'''
    }

}

然后你只需在你的gsp中使用这些标签

<g:plusone size="medium"></g:plusone>
<g:plusoneScript />