2012-02-23 50 views
2

我有Facebook的iframe应用程序,我用JSON拉内容并用搜索条件表示它在列表中。Facebook Like按钮为每个项目?

On item单击新内容在同一页面上显示(使用ajax),该页面显示有关项目的更多信息。我想为每个点击的项目添加一个LIKE按钮。

但它必须是一个不同的URL,所以我可以将它发布到我的FB墙上。所以当我检查墙上的Like按钮链接时,它会重定向我的特殊项目。

这里有几个问题:

1)如何定义Like按钮为每个项目?

<div class="fb-like" data-href="LINK FOR LIKE BUTTON" data-send="true" data-layout="button_count" data-width="450" data-show-faces="true" data-colorscheme="dark"></div> 

这里是LIKE按钮,我需要为每个项目指定不同的数据-HREF。

2)我需要发送一些参数到url。比方说,当点击物品时,我应该将物品ID发送到URL。现在我可以将物品ID发送到我的网址,但它只是在我的iframe中执行 - 而不是在Facebook网址中。我怎样才能做到这一点?

我认为第二个问题会给我的第一个问题的答案。

编辑:我这样做使用jQuery。我使用jQuery为我的网站,与JSON拉内容和代表它与HTML和jQuery,我有,它是所有相同的页面,但点击我隐藏一些内容,并显示另一个,所以我的主要内容是一个项目列表,点击项目我隐藏主要内容,并显示项目信息内容

因此,它是一个页面,所以它具有相同的URL(主要内容,项目内容,. ..所有相同的URL)

所以添加一个类似按钮的每一个项目,我需要让这些项目之间的差异,所以我做了这个

'window.location.href=window.location.href + "#id=" + propertyid;' 

所以现在,每一个项目都有自己的网址,这是我手工完成,所以现在每一个项目都有自己的网址,我可以使用Like按钮

但是,当我提醒这个新window.location的。 href似乎是好的,我得到了包含#id = 12345的这个新位置,但是当我尝试发送该位置到LIKE按钮data-href时,它总是只是主要位置,没有这个新的部分包含项目id#id = 12345

+0

你有没有签出'.attr()'?这看起来像你所需要的。 – Edwin 2012-02-23 15:17:25

+0

我试过了,但因为我没有解决我的第二个问题,我没有看到任何改变,因此每个人都是为相同的网址 – hullfan 2012-02-23 18:03:45

+0

你确定每个ID是不同的(并且你没有意外超载)?否则,jQuery将同时选择它们,因此,同时更改它们全部。你的代码的基本/总体轮廓(甚至是伪代码)会有所帮助。 – Edwin 2012-02-23 18:47:12

回答

1

把它放在for循环中,你应该没问题。

var elements = $("#divId").html(); 
$("#divId").html(elements + "like button code"); 
$("#divId.fb-like").attr("data-href", "what you want to link to"); 

.html().attr()规格。

+0

点击项目我这样做:'window.location.href = window.location.href +“#id =”+ propertyid;'所以每个项目都有自己的URL,并且比我尝试从类似按钮传递window.location到data-href,但由于某种原因它总是发送原始的window.location.href(没有这个新的part#id = 12345),但是当我使用'alert(window.location.href)'我得到它#id = 12345 – hullfan 2012-02-24 13:36:00

+0

@ hullfan ...什么?请编辑您的问题以包含此信息,并带有适当的格式。另外,据我所知,在这种情况下你并没有使用jQuery,尽管它会为你节省很多时间。 – Edwin 2012-02-24 15:23:14

+0

我在我的Q中添加了更多信息 – hullfan 2012-02-27 07:42:52

3

是的,您可以为动态创建的屏幕内容(例如,Ajax弹出窗口)上显示的“项目”创建FB Like按钮。

问题:

个别项目的URL FB要求对可喜欢每个项目一个“社交图端点”。所以你也需要支持只返回“item”的url。这是个别项目的网址。如果他们想了解更多有关该项目的信息,它也是FB浏览器点击的url。

示例:一个页面显示文章列表。每篇文章旁边都有一个单独的“Like”按钮。当一个人“喜欢”文章B时,它显示在他们的FB流中。当他们在流中点击“文章B”时,它应该转到仅显示文章B的页面。

此外,Facebook上将查询文章B的URL,以获取个人的FB元标题项目(图片,分类等)。

解析FB项目的新dom根据你使用哪种方法来添加FB像按钮等,你可能需要告诉FB显式地(重新)解析刚刚添加的dom的新部分动态内容。 (您的弹出窗口)

既然您知道添加弹出窗口的元素,则不需要告诉FB来重新分析整个dom。告诉他们解析开始在新添加/更改的元素开始:

代码我使用:从FB

if (event_data) { // event_data was received, show it 
    panel.setBody(event_data); // set the pop-up's body 
    if (!this.ie && typeof(FB) != "undefined" && FB.XFBML) 
    {FB.XFBML.parse(this.panel_el);} // Parse FaceBook markup 
.... 

文档在此: