0

アーティスト ディレクトリを作成し、Pixel & Tonic の Playa を使用して各メンバーの「ファン」を管理しています。

各ユーザーのプロファイルには、ユーザーが「ファンにした」(Facebook の「いいね」に似た) すべてのメンバーを表示する複数選択の Playa フィールドがあります。

私がやりたいのは、実際にはユーザーの Playa フィールドにメンバーの名前を追加するセーフクラッカーの送信である「リンク」を用意することです。

基本的には、ユーザー ID と、ページが表示されているメンバーのスクリーン ネーム用の非表示フィールドを含むフォームになります。ユーザーの既存の Playa フィールド エントリにスクリーン ネームを追加したいと考えています。

これを達成するための最良の方法は何ですか?

ありがとう!

タイ

4

2 に答える 2

4

Safecracker も使用でき、Playa の非表示フィールドを作成できます。

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

ここでは Playa フィールド名を使用する必要があります (field_id ではありません)。

次に、Safecracker フォームを ajax で送信できます。

于 2012-04-02T09:58:01.933 に答える
1

これを行うにはカスタム プラグインを追加する必要があるため、カスタム 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... Playa フィールド10の適切な 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)
    );
}
于 2012-03-29T16:17:35.687 に答える