Решил эту проблему, добавил id_product.
В Hook.php
if($hook_name == 'displayProductListFunctionalButtons') {
$data_wrapped = '<!--[hook '.$hook_name.'] '.$hook_args['id_product'].' '.$m['id_module'].'-->'.$data.'<!--[hook '.$hook_name.'] '.$hook_args['id_product'].' '.$m['id_module'].'-->';
}
В Controller.php
if($hook_name == 'displayProductListFunctionalButtons') {
$pattern = "/<!--\[hook $hook_name\] (.*?) $id_module-->(.*?)<!--\[hook $hook_name\] (.*?) $id_module-->/s";
if (preg_match_all($pattern, $content, $matches)) {
foreach ($matches[1] as $key => $id_product) {
$hook_args['id_product'] = $id_product;
$hook_content = Hook::exec($hook_name, $hook_args, $id_module, false, true, false, null);
$pattern = "/<!--\[hook $hook_name\] $id_product $id_module-->(.*?)<!--\[hook $hook_name\] $id_product $id_module-->/s";
$hook_content = preg_replace('/\$(\d)/', '\\\$$1', $hook_content);
$count = 0;
$p_content = preg_replace($pattern, $hook_content, $content, 1, $count);
if (preg_last_error() === PREG_NO_ERROR && $count > 0) {
$content = $p_content;
}
}
}