首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过Safecracker追加Playa字段

通过Safecracker追加Playa字段
EN

Stack Overflow用户
提问于 2012-03-29 20:55:53
回答 2查看 452关注 0票数 0

我正在建立一个艺术家目录,并使用Pixel &Tonic的Playa来管理每个成员的“粉丝”。

在每个用户的个人资料中,有一个多选的Playa字段,显示用户“粉丝”的所有成员(类似于Facebook上的“喜欢”)。

我想做的是有一个“链接”,这实际上是一个安全黑客提交,将添加一个成员的名字到用户的Playa字段。

本质上,它将是一个包含隐藏字段的表单,其中包含用户ID和正在查看其页面的成员的屏幕名称。我想将屏幕名称附加到用户现有的Playa字段条目中。

实现这一目标的最好方法是什么?

谢谢!

ty

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-03-30 00:17:36

您需要添加一个自定义插件来执行此操作,以便您可以执行自定义SQL插入。

不确定您是否熟悉编写插件,但您可以通过pkg.io创建一个插件,然后将此函数添加到生成的文件中。然后,您可以创建一个到模板的链接,在该模板中放置您的新标签,并可能通过segments传递成员和新粉丝的ids:

代码语言:javascript
复制
{exp:my_plugin:add_fan member_id="{segment_3}" fan_id="{segment_4}"}

这个函数假设(可能是错误的)您将成员存储在频道中(我假设是这样的,因为您使用的是Playa字段),并且您可以在模板中访问成员和粉丝的entry_id。如果不是,您可能需要执行一些更多的查询来查找每一个的entry_id。它还调用您的Playa字段field_id_10 ...您需要将10替换为您的Playa字段的正确field_id。

代码语言:javascript
复制
function add_fan()
{
    $this->EE =& get_instance();

    $member_id = $this->EE->TMPL->fetch_param('member_id');
    $fan_id = $this->EE->TMPL->fetch_param('fan_id');

    $data = array(
        'parent_entry_id' => $member_id,
        'child_entry_id' => $fan_id,
        'parent_field_id' => 10
    );

    $this->EE->db->query(
        $this->EE->db->insert_string('exp_playa_relationships', $data)
    );
}
票数 1
EN

Stack Overflow用户

发布于 2012-04-02 17:58:02

你也可以使用Safecracker,并为Playa创建隐藏字段:

代码语言:javascript
复制
<input type="hidden" name="my_playa_field_name[selections][]" />

您必须在此处使用Playa字段名称(而不是field_id)。

然后你可以在ajax中提交你的安全黑客表单。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9925794

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档