Возможно ли как-то скрывать поле «флаг», если значение чекбокса неактивно? В идеале, если бы в опции поля была такая настройка, так как не всегда надо показывать значение «нет».
Почему нет. Теоретически да. Можно например с помощью стилей и js. Или написать хук, который будет проверять поле и менять его тип.
Почему нет. Теоретически да. Можно например с помощью стилей и js. Или написать хук, который будет проверять поле и менять его тип.
что для этого может понадобиться от меня, если я сам не могу это сделать?)
что для этого может понадобиться от меня, если я сам не могу это сделать?)
Не знаю. Деньги наверное. Но вроде как то была тема на тему скрытия поля. Может стоит поискать?
<?php ?> <script> var field = document.querySelector('.f_test'); var val = $(field).find('.value'); if(val.text()=='Нет')$(field).addClass('hidden') </script> <?php ?>
В конце файла \templates\modern\content\default_item.tpl.php этот код.
Вместо test системное имя вашего поля флаг. Класс hidden должен скрыть поле, поэтому пропишите для него соответствующее правило.
1. В папке templates/modern/assets/fields создать файл newcheckbox.tpl.php и копируем в него код из файла checkbox.tpl.php из этой же папки
и/или
в папке templates/default/assets/fields создать файл newcheckbox.tpl.php и копируем в него код из файла checkbox.tpl.php из этой же папки.
2. В папке system/fields создать файл newcheckbox.php с таким содержимым:
<?php class fieldNewcheckbox extends cmsFormField { public $title = 'Новый чекбокс'; public $sql = 'TINYINT(1) UNSIGNED NULL DEFAULT NULL'; public $filter_type = 'int'; public $var_type = 'integer'; public function getOptions(){ return [ new fieldCheckbox('not_value', [ 'title' => 'Если чекбокс не отмечен, выводить слово "Нет"' ]) ]; } public function parse($value){ $not_value = $this->options['not_value'] ? LANG_NO : ''; return ($value ? LANG_YES : $not_value); } public function applyFilter($model, $value) { return $model->filterEqual($this->name, 1); } }
3. Заменить поле «Флаг» на это поле.
1. В папке templates/modern/assets/fields создать файл newcheckbox.tpl.php и копируем в него код из файла checkbox.tpl.php из этой же папки
и/или
в папке templates/default/assets/fields создать файл newcheckbox.tpl.php и копируем в него код из файла checkbox.tpl.php из этой же папки.
2. В папке system/fields создать файл newcheckbox.php с таким содержимым:
<?php class fieldNewcheckbox extends cmsFormField { public $title = 'Новый чекбокс'; public $sql = 'TINYINT(1) UNSIGNED NULL DEFAULT NULL'; public $filter_type = 'int'; public $var_type = 'integer'; public function getOptions(){ return [ new fieldCheckbox('not_value', [ 'title' => 'Если чекбокс не отмечен, выводить слово "Нет"' ]) ]; } public function parse($value){ $not_value = $this->options['not_value'] ? LANG_NO : ''; return ($value ? LANG_YES : $not_value); } public function applyFilter($model, $value) { return $model->filterEqual($this->name, 1); } }3. Заменить поле «Флаг» на это поле.
Вы как всегда гений!