【问题标题】:Append Playa field via Safecracker通过 Safecracker 附加 Playa 字段
【发布时间】:2023-03-06 23:10:01
【问题描述】:

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

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

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

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

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

谢谢!

ty

【问题讨论】:

    标签: expressionengine safecracker


    【解决方案1】:

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

    <input type="hidden" name="my_playa_field_name[selections][]" />
    

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

    然后您可以在 ajax 中提交您的 Safecracker 表单。

    【讨论】:

      【解决方案2】:

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

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

      {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。

      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)
          );
      }
      

      【讨论】:

      • 简单而精彩!谢谢!
      猜你喜欢
      • 1970-01-01
      • 2019-06-20
      • 2017-07-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-22
      • 1970-01-01
      • 2015-12-02
      相关资源
      最近更新 更多