[РЕШЕНО] Как отключить возможность комментировать ноду после установки flag

Главные вкладки

Аватар пользователя whiesam whiesam 22 марта 2014 в 3:13

Хочу после установки флага (модуль Flag) отключить возможность коментировать ноду (сами коменты пусть остаются).
Не могу понять какие настройки выставлять в Rules или ещё где.

Комментарии

Аватар пользователя roman-yrv roman-yrv 23 марта 2014 в 17:00

По идее, чтобы запретить комментарии для отдельной ноды, нужно поле comment в этой ноде выставить в 1.

А почему бы Вам не сделать это с помощью хука hook_flag_flag (см. файл flag.api.php, там много разных хуков), который бы перехватывался при установке флага ?

Или более "дубовый" способ - определяете свой node-ВАШ_ТИП_НОДЫ.tpl.php и в нём руками делаете проверку - если такой-то флаг установлен, то форму ввода нового комментария не отображать.

Аватар пользователя whiesam whiesam 24 марта 2014 в 13:59

Лучше б конечно в шаблоне, но не тот случай. При обновлении слетит.
Решил сделать через хук. Документация скудная если честно, но смог хоть что-то нарыть.
Делал с учетом что флаг глобальный, отдельный для каждого вроде немного по другому будет.
Возможно не самый лучший способ реализации, но он хотя бы работает:

<?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);
    }
}
?>
Аватар пользователя roman-yrv roman-yrv 24 марта 2014 в 14:02

Ну да, документация на уровне комментариев к функциям + есть раздел на сайте drupal.org.
Ну, в принципе, всё более-менее понятно.

Чем rules как бы удобнее в данном случае - тем, что можно в процессе работы в админке его отключить, включить, что-то подправить ... и не нужно править код модуля.
Ну опять же, по своему опыту сомневаюсь, что этим кто-то занимался бы.

Аватар пользователя whiesam whiesam 24 марта 2014 в 14:09

Через рулез не выйдет. Я его весь выпотрошил. Не знает он такого поле как comment, если ставить реакцию на установку flag.

"roman-yrv" wrote:
Ну да, документация на уровне комментариев к функциям + есть раздел на сайте drupal.org.

Я необходимые функции нашел в комментариях, в богом забытой ноде на дру.орг. При этом в офф. документации про эти функции ни слова, или устаревшие переменные)))

Аватар пользователя roman-yrv roman-yrv 24 марта 2014 в 14:23

Там в флаговом модуле, насколько я помню, немного код поменялся от версии 7.2 к версии 7.3.

Насчет rules - можно сделать так, если есть такая уж необходимость в rules.
Взять rule на изменение флага и на него повесить выполнение php-кода, который будет запрещать для ноды комментирование. То есть, код, похожий на тот, который Вы привели, только там будут другие переменные для работы с нодой, для флага и т.д.

Аватар пользователя whiesam whiesam 24 марта 2014 в 14:31

"roman-yrv" wrote:
Насчет rules - можно сделать так, если есть такая уж необходимость в rules.
Взять rule на изменение флага и на него повесить выполнение php-кода, который будет запрещать для ноды комментирование. То есть, код, похожий на тот, который Вы привели, только там будут другие переменные для работы с нодой, для флага и т.д.

Совсем забыл про PHP в Rules. Надо запомнить. Но модулем всё же лучше, а то надо будет этот php ещё из базы вытаскивать.