1

Drupal MySQL データベースの「コメント」テーブルを編集して、2 つの行を追加しました。これは、URL パラメーターを受け取るページがあるためです。そのため、ページが 1 つある場合でも、コメントのパラメーターの値を区別する必要があります。Mycomment.moduleを編集して MySQL クエリを編集するのに問題があります。'INSERT into...'そのファイルだけでなく、どこにもクエリが見つかりません。コメントモジュールフォルダー内のすべてに目を通しました。

データベースの挿入に影響しているように見えるのはcomment_publish_action()関数comment.moduleですが、追加された列にはデフォルト値がないため、まだいくつかの問題に遭遇しています。

その関数は次のとおりです。「typenode」と「idofnode」は、テスト値を含む追加された列です。

function comment_publish_action($comment, $context = array()) {
  if (isset($comment->subject)) {
    $subject = $comment->subject;
    $comment->status = COMMENT_PUBLISHED;
  }
  else {
    $cid = $context['cid'];
    $subject = db_query('SELECT subject FROM {comment} WHERE cid = :cid', array(':cid' => $cid))->fetchField();
    db_update('comment')
      ->fields(array(
        'status' => COMMENT_PUBLISHED,
        'typenode' => 'player',
        'idofnode' => 1239
      ))
      ->condition('cid', $cid)
      ->execute();
  }
  watchdog('action', 'Published comment %subject.', array('%subject' => $subject));
}
4

1 に答える 1

1

編集 comment.module はお勧めできません。次回のコア更新時に、すべての変更が失われます。カスタム モジュールを作成し、そこにいくつかのフックを実装することをお勧めします。

comment_save($comment)新しいコメントを挿入/更新する手順を実行する機能があります。この関数では、データベース テーブル 'コメント' の挿入または更新を行う行を見つけることができますdrupal_write_record('comment', $comment);(ロジックに依存)。ただし、この行のmodule_invoke_all('comment_presave', $comment);前に、データベースに格納される前に $comment オブジェクトを変更できるフックがあります。これは良い方法です。このフックをカスタム モジュールに実装し、そこで変更を行います。

function custom_module_comment_presave($comment) {
  //add rows info here
}
于 2013-04-02T07:10:05.807 に答える