Нодус:Редактирование итема из структуры
При формировании структуры сайта в качестве узлов можно использовать материалы нодуса. При этом редактировать материалы из структуры по умолчанию невозможно. Но можно организовать редактирование и запись в БД изменений в материале непосредтсвенно из навигационной структуры сайта.
Данный метод работает начиная с TAO v2.1.48 (пример действителен для Nodus с версии 3, для более ранних нужно поменять имена соответствующих событий).
1. Необходимо создать модуль, в котором будут описано дополнительное поле с ссылкой на форму редактирования материала.
Для этого создадим модуль с имененем Structure.php и опишем следующие методы:
// /app/lib/Structure.php class App_Structure implements Core_ModuleInterface { static function initialize() { Events::add_listener("nodus.app.admin.structure.tree_fields", 'App.Structure::structure_columns'); Events::add_listener("nodus.app.admin.structure.on_row", 'App.Structure::structure_row'); } static function structure_columns(&$fields) { $fields['edit_item'] = array( 'caption' => 'Запись в БД', 'formatter' => 'Slick.Formatters.Raw' ); } static function structure_row($row, $controller) { $url = ''; if (preg_match('~^:([0-9]+)~', $row->url, $m)){ $url = WS::env()->urls->nodus->admin_edit_url($m[1]); } if ($url) { $row['edit_item'] = '<a href="'.$url.'">Редактировать</a>'; } } }
2. Подключим модуль в index.php.
// www/index.php Core::load('App.Structure');
В результате в админке будет выведено дополнительное поле с ссылкой на форму редактирования материала.