2012-03-29 64 views
0

我正在建立一個藝術家目錄並使用Pixel & Tonic's Playa管理每個成員的「粉絲」。通過Safecracker追加Playa字段

在每個用戶的個人資料中,都有一個多選的Playa字段,顯示用戶「扇動」的所有成員(類似於Facebook上的「like」)。

我想要做的是有一個「鏈接」,這實際上是一個safecracker提交,它會將用戶的名字添加到用戶的Playa字段中。

本質上,它將是一個窗體,其中包含用戶ID和正在查看其頁面的成員的屏幕名稱的隱藏字段。我想將屏幕名稱追加到用戶現有的Playa字段條目。

達到此目的的最佳方法是什麼?

謝謝!

TY

回答

1

你需要添加自定義插件來做到這一點,這樣你就可以執行自定義的SQL插入。

不確定您是否熟悉編寫插件,但可以通過pkg.io創建一個插件,然後將此函數添加到生成的文件中來開始。然後,你可以創建一個鏈接到一個模板,你把你的新標籤,也許通過IDS爲會員和連接孔段新風扇:

{exp:my_plugin:add_fan member_id="{segment_3}" fan_id="{segment_4}"} 

此功能使(可能是錯誤的),前提是你」重新存儲你的會員在頻道中(我假設是這樣,因爲你使用的是一個普拉亞域),並且你可以在模板中訪問成員和粉絲的entry_id。如果沒有,您可能需要執行一些更多的查詢來查找每個項的entry_id。它也稱爲您的Playa地區field_id_10 ...您需要用您的Playa地區的適當field_id替換10

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

簡單而輝煌!謝謝! – 2012-04-02 14:37:56

4

您可以使用撬鎖過,併爲創造海灘隱藏字段:

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

必須在此處使用的Playa字段名(不是FIELD_ID)。

然後你可以在ajax中提交你的Safecracker表單。