1

コンテンツ タイプであるサイトの「フォーラム トピック」をコンテンツ タイプ「アクション」の別のノードの 1 つのコメントに変換する 1 つのモジュールを開発する必要があります。フォーラムのトピックとノード「アクション」には、共通の分類用語があります。そこで、テーブル「ノード」、「ユーザー」から、DB で必要な値の検索を開始し、テーブル「コメント」で db_insert を作成した後です。

function mymodule_entry_insert($entry) {
    $select = db_select('node', 'n');
    $select->join('users','u','u.uid = n.uid');

$select->fields('n', array('nid', 'title',  'created'));
$select->fields('u', array('name'));


$select->condition(db_or()->condition('n.type', 'forum', '='));

// Return the result in object format.
return $select->execute()->fetchAll();

$fields = array(

'nid' => $select->fields('n', array('nid')),
'uid' => $select->fields('n', array('uid')), 
'subject' => $select->fields('n', array('title')),
'hostname' =>'::1',
'created' => $select->fields('n', array('created')),
'changed' => $select->fields('n', array('created')),
'status' => '1',
'language' => 'und',
'thread' => '01/',
'name' => $select->fields('u', array('name')),
'mail' => '',
'homepage' => '',);

try {
     $return_value = db_insert('comment')
    ->fields($fields)
    ->execute();

  }

catch (Exception $e) {
drupal_set_message(t('db_insert failed. Message = %message, query= %query',
array('%message' => $e->getMessage(), '%query' => $e->query_string)), 'error');
}
 return $return_value;
}

インターネットで何日も検索した後、これに対する非常に簡単な解決策が見つかりませんでした。大した経験はありません。モジュールの 2 番目の部分は、元フォーラムのコメントを、作成された新しいコメントの子コメントに変換することです。したがって、コメントを nid (「このコメントが返信であるノード」) でグループ化する必要があり、1 つ (父親、古いフォーラム) を除くすべてのコメントは、父親の cid (「主キー」) を挿入する必要があります。 'pid' 列のコメント (このコメントが返信されるコメント cid)

3 番目の部分は、フォーラムと同じ用語を持つノードの ID を取得し、影響を受けるコメントの nid を変更することです。

第1弾と同じように、第2弾、第3弾も展開できればと思っています。

ありがとうございました :)

4

0 に答える 0