Как изменить название раздела при его редактировании

Логотип CMS NetCatВ некоторых случаях бывает необходимо при администрировании сайтов менять не только содержимое страниц но и их заголовки.
В бесплатных системах управления сайтами это делается довольно легко средствами самого движка без дополнительных настроек, но например в 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]'>

Буду благодарен, если подскажете в комментариях почему.

Комментариев: 2

  • 24.07.2010 Евгений:

    Попробуй так:

    ;"

    $sub_title = listQuery(«select * from subdivision where subdivision_id = $sub»,"\$data[Subdivision_Name]");

    .......

    ... value='$sub_title'>

  • 24.07.2010 Кирилл:

    Ок, попробую, спасибо :)


Добавление комментария:

 css.php