Это сложно. Во-первых, я бы предложил вместо этого пойти и посмотреть, сможете ли вы управлять тем, что вам нужно, используя hook_comment (http://api.drupal.org/api/drupal/developer--hooks--core.php/function/hook_comment/6). Это действительно больше того, для чего это необходимо.
Если вам действительно нужно переопределить comment_save, то часто хорошим выбором является осмотр того, что его называют. Для этой ситуации вам повезло - comment_save только вызывается в одном месте, в строке 1542 комментария.module, внутри comment_form_submit.
Теперь comment_form_submit - это функция отправки формы - вместо замены comment_save мы можем вместо этого создать собственную версию comment_form_submit (и для аргумента мы предположим, что мы работаем в модуле custom_module) - поэтому я хотел бы создать новую функцию custom_module_comment_form_submit, которая вызывает вариант comment_save, который меня интересует, а затем используйте hook_form_alter() (http://api.drupal.org/api/drupal/developer--hooks--core.php/function/hook_form_alter/6), чтобы установить $ form ['# submit'], чтобы заменить значение 'comment_form_submit' с 'custom_module_comment_form_submit'.
Это не идеально - если вы устанавливаете другой модуль, который использует comment_save, вам нужно будет найти аналогичное обходное решение. И если в Drupal обнаружена ошибка или дыра безопасности, которая исправлена в той части, над которой вы работаете, вы не получите этого исправления безопасности в своем коде. Но если вы абсолютно должны заменить comment_save, это в значительной степени единственный способ сделать это.
Согласен. Я хотел бы использовать с помощью hook_comment и hooks вообще, когда вам нужно «переопределить» поведение ядра или других модулей. – 2010-12-01 22:45:18