Хочу после установки флага (модуль Flag) отключить возможность коментировать ноду (сами коменты пусть остаются).
Не могу понять какие настройки выставлять в Rules или ещё где.
По идее, чтобы запретить комментарии для отдельной ноды, нужно поле comment в этой ноде выставить в 1.
А почему бы Вам не сделать это с помощью хука hook_flag_flag (см. файл flag.api.php, там много разных хуков), который бы перехватывался при установке флага ?
Или более "дубовый" способ - определяете свой node-ВАШ_ТИП_НОДЫ.tpl.php и в нём руками делаете проверку - если такой-то флаг установлен, то форму ввода нового комментария не отображать.
Лучше б конечно в шаблоне, но не тот случай. При обновлении слетит.
Решил сделать через хук. Документация скудная если честно, но смог хоть что-то нарыть.
Делал с учетом что флаг глобальный, отдельный для каждого вроде немного по другому будет.
Возможно не самый лучший способ реализации, но он хотя бы работает:
Ну да, документация на уровне комментариев к функциям + есть раздел на сайте drupal.org.
Ну, в принципе, всё более-менее понятно.
Чем rules как бы удобнее в данном случае - тем, что можно в процессе работы в админке его отключить, включить, что-то подправить ... и не нужно править код модуля.
Ну опять же, по своему опыту сомневаюсь, что этим кто-то занимался бы.
Через рулез не выйдет. Я его весь выпотрошил. Не знает он такого поле как comment, если ставить реакцию на установку flag.
"roman-yrv" wrote:
Ну да, документация на уровне комментариев к функциям + есть раздел на сайте drupal.org.
Я необходимые функции нашел в комментариях, в богом забытой ноде на дру.орг. При этом в офф. документации про эти функции ни слова, или устаревшие переменные)))
Там в флаговом модуле, насколько я помню, немного код поменялся от версии 7.2 к версии 7.3.
Насчет rules - можно сделать так, если есть такая уж необходимость в rules.
Взять rule на изменение флага и на него повесить выполнение php-кода, который будет запрещать для ноды комментирование. То есть, код, похожий на тот, который Вы привели, только там будут другие переменные для работы с нодой, для флага и т.д.
Насчет rules - можно сделать так, если есть такая уж необходимость в rules.
Взять rule на изменение флага и на него повесить выполнение php-кода, который будет запрещать для ноды комментирование. То есть, код, похожий на тот, который Вы привели, только там будут другие переменные для работы с нодой, для флага и т.д.
Совсем забыл про PHP в Rules. Надо запомнить. Но модулем всё же лучше, а то надо будет этот php ещё из базы вытаскивать.
Комментарии
По идее, чтобы запретить комментарии для отдельной ноды, нужно поле comment в этой ноде выставить в 1.
А почему бы Вам не сделать это с помощью хука hook_flag_flag (см. файл flag.api.php, там много разных хуков), который бы перехватывался при установке флага ?
Или более "дубовый" способ - определяете свой node-ВАШ_ТИП_НОДЫ.tpl.php и в нём руками делаете проверку - если такой-то флаг установлен, то форму ввода нового комментария не отображать.
Лучше б конечно в шаблоне, но не тот случай. При обновлении слетит.
Решил сделать через хук. Документация скудная если честно, но смог хоть что-то нарыть.
Делал с учетом что флаг глобальный, отдельный для каждого вроде немного по другому будет.
Возможно не самый лучший способ реализации, но он хотя бы работает:
<?php
// Закрываем комменты
function MYMODULE_flag_flag($flag, $content_id, $account, $flagging) {
if ($flag->name == 'ticket_status') {
$loaded_node = node_load($content_id);
$loaded_node->comment = 1;
node_save($loaded_node);
}
}
// Открываем комменты
function MYMODULE_flag_unflag($flag, $content_id, $account, $flagging) {
if ($flag->name == 'ticket_status') {
$loaded_node = node_load($content_id);
$loaded_node->comment = 2;
node_save($loaded_node);
}
}
?>
Ну да, документация на уровне комментариев к функциям + есть раздел на сайте drupal.org.
Ну, в принципе, всё более-менее понятно.
Чем rules как бы удобнее в данном случае - тем, что можно в процессе работы в админке его отключить, включить, что-то подправить ... и не нужно править код модуля.
Ну опять же, по своему опыту сомневаюсь, что этим кто-то занимался бы.
Через рулез не выйдет. Я его весь выпотрошил. Не знает он такого поле как comment, если ставить реакцию на установку flag.
Я необходимые функции нашел в комментариях, в богом забытой ноде на дру.орг. При этом в офф. документации про эти функции ни слова, или устаревшие переменные)))
Там в флаговом модуле, насколько я помню, немного код поменялся от версии 7.2 к версии 7.3.
Насчет rules - можно сделать так, если есть такая уж необходимость в rules.
Взять rule на изменение флага и на него повесить выполнение php-кода, который будет запрещать для ноды комментирование. То есть, код, похожий на тот, который Вы привели, только там будут другие переменные для работы с нодой, для флага и т.д.
Совсем забыл про PHP в Rules. Надо запомнить. Но модулем всё же лучше, а то надо будет этот php ещё из базы вытаскивать.
и как реализовали в результате то?