我编辑了Drupal MySQL数据库中的'comment'表,添加了两行。这是因为我有一个接受URL参数的页面,所以虽然只有一个页面,但我需要区分该参数的注释值。我有麻烦编辑我的comment.module
编辑MySQL查询。我找不到任何类型的'INSERT into...'
查询,不只是在那个文件中。我已经查看了注释模块文件夹中的所有内容。
影响数据库插入的似乎是comment.module
中的comment_publish_action()
函数,但我仍然遇到一些关于添加列的问题,因为它们没有默认值。
这是该函数,'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));
}
编辑评论。模块不是一个好主意。在下一次核心更新期间,所有更改将丢失。最好创建一个自定义模块并在那里实现一些钩子。
函数comment_save($comment)
执行插入/更新新注释的步骤。在这个函数中,你可以找到一行drupal_write_record('comment', $comment);
,它插入或更新db表"评论"(依赖于逻辑)。但是在这行之前有一个钩子module_invoke_all('comment_presave', $comment);
,它允许你在$comment对象被存储到数据库之前修改它。这是一个很好的方法——在自定义模块中实现这个钩子,并在那里进行修改。
function custom_module_comment_presave($comment) {
//add rows info here
}