В некоторых случаях бывает необходимо при администрировании сайтов менять не только содержимое страниц но и их заголовки.
В бесплатных системах управления сайтами это делается довольно легко средствами самого движка без дополнительных настроек, но например в NetCat дело обстоит несколько иначе. А именно изначально компоненты НетКат не уменют редактировать название раздела, возможно из целей безопасности, возможно для избегания ошибок, а возможно просто такова идеология информационной системы.
Рассмотрим одно из решений задачи первым пришедшее на ум.
План решения:
1. Передать компоненту на вход новое название раздела.
2. Вместе или после изменения основных полей компонентом поменять название раздела.
Реализация:
1. Выберем компонент для тестов. Пусть это будет «Простая страница». Проследуем в Шаблоны действий::Изменение.
2. Сгенерируем «Альтернативную форму добавления объекта» нажав на соответствующуюю ссылку перед полем. Добавим в последнюю часть сгенерированного кода следующее:
... ".nc_text_field("TextContent", "", $classID, 1)."<br> <br> Название раздела:<br> // название поля // поле для передачи нового названия раздела, по умолчанию имеет текущее значение из глобальной переменной $f_title <input name='razdel_name' type='text' size='100' maxlength='100' value='$f_title'> <br> <br>".NETCAT_MODERATION_INFO_REQFIELDS."<br><br> ".nc_submit_button(NETCAT_MODERATION_BUTTON_CHANGE)." </form> ... |
3. В поле «Действия после изменения объекта» добавим SQL-запрос на обновление названия раздела. (перед этим как и во 2-ом пункте следует сгенерировать код действия после изменения):
"; // наш запрос listQuery("update subdivision set subdivision_name = $razdel_name where Subdivision_ID = $sub"); if($inside_admin) { // то, что идет дальше в стандартном коде после изменения ob_end_clean(); header("Location: ".$goBackLink."&inside_admin=1"); exit; } |
Как видно мы использовали переменную $razdel_name в которую записалось передаваемое значение поля нового названия раздела.
Переменная $sub как и ряд других видны в момент обработки кода после добавления, изменения, удаления объектов что видно по коду форм добавления, изменения, удаления и описано в руководство разработчика (стр. 91):
По умолчанию после добавления объекта появляется сообщение об успешном
добавлении объекта. Содержание этой страницы (и действия, которые
происходят после добавления) можно переопределить, например, для
«вопросов-ответов» вывести сообщение о том, что в скором времени вопрос
будет обработан. Также можно вызывать различные действия: операции с
базой, отправку писем и пр. Все поля, отправленные через форму добавления,
доступны в «действии после добавления».
Вставка PHP-кода в это поле осуществляется следующим образом:
«;
PHP-код
echo »
Единственное чего не получилось, достать название раздела запросом и использовать его вместо $f_title в коде альтернативной формы изменения объекта:
;" listQuery("select * from subdivision where subdivision_id = $sub"); echo " <br> Название раздела:<br> <input name='razdel_name' type='text' size='100' maxlength='100' value='$data[subdivision_name]'> |
Буду благодарен, если подскажете в комментариях почему.
Попробуй так:
;"
$sub_title = listQuery(«select * from subdivision where subdivision_id = $sub»,"\$data[Subdivision_Name]");
.......
... value='$sub_title'>
Ок, попробую, спасибо