"Редактировать категорию" - дополнительное поле.

ЕСТЬ РЕШЕНИЕ
#1 28 ноября 2024 в 18:40

Как добавить свое дополнительное поле на страницу «Редактировать категорию» и вывести его потом в шаблоне страницы категории?
Нашел нужный файл /system/content/forms/form_category.php, добавил поле

  1. new fieldCheckbox('test', [
  2. 'title' => 'test'
  3. ]),

Поле выводится на странице настройки категории, но введенные значения не сохраняется.
Буду благодарен, если кто подскажет что-куда прописать, чтобы:
1 Значения сохранялись.
2 Значения можно было вывести в шаблоне категорий (/templates/{templateName}/controllers/content/category_view.tpl.php).
В виджетах как-то автоматом все получается. А тут я че-то не понимать ))

#2 28 ноября 2024 в 20:09

 Andrew Lutz, делал компонент для вывода второго описания в категории. Поправьте компонент под себя instantcms.ru/forum/razdelit-opisanie-kategorii-na-verhnyuyu-i-nizhnyuyu-chasti.html#post-360858

#3 29 ноября 2024 в 11:37

 Andrew Lutz, делал компонент для вывода второго описания в категории. Поправьте компонент под себя instantcms.ru/forum/razdelit-opisanie-kategorii-na-verhnyuyu-i-nizhnyuyu-chasti.html#post-360858

Zau4man

Да, почти то, что надо! Спасибо, очень помогло!
А то хотелось понять как вообще в принципе добавлять свои поля в настройки категории.
И выводить затем: в карточку категории в списке категорий и в страницу самой категории.
В дефолтном варианте очень скудный набор — заголовок, описание, обложка и все.
Добавил еще одно поле для вывода иконки категории.
Вроде все работает.
Но спрошу на всякий случай — все ли правильно или есть более изящные решения, если нужно будет по-больше полей?
content_cat_form.php

  1. if (!$model->db->isFieldExists($table_name, 'description_extended')) {
  2. $model->db->query("ALTER TABLE `cms_$table_name` ADD `description_extended` TEXT NULL DEFAULT NULL AFTER `description`;");
  3. }
  4. if (!$model->db->isFieldExists($table_name, 'icon_title')) {
  5. $model->db->query("ALTER TABLE `cms_$table_name` ADD `icon_title` TEXT NULL DEFAULT NULL AFTER `title`;");
  6. }
  7.  
  8. $fieldset_ids = array_keys($form->getStructure());
  9.  
  10. $form->addField($fieldset_ids[0],
  11. new fieldHtml('description_extended', [
  12. 'title' => 'Расширенное описание категории',
  13. 'can_multilanguage' => true,
  14. 'multilanguage_params' => [
  15. 'is_table_field' => true,
  16. 'table' => $table_name
  17. ]
  18. ]));
  19. $form->addField($fieldset_ids[0],
  20. new fieldString('icon_title', [
  21. 'title' => 'Название иконки категории'
  22. ]
  23. )
  24. );
  25.  
#4 29 ноября 2024 в 12:33

 Andrew Lutz, пойдет. Под разное содержимое надо подбирать свой тип полей. Для текста — text, для небольших строк — varchar и т.п.

Запрос на создание столбца для хранения данных выполняется один раз, поэтому красиво он написан, или не очень, не так важно :)

Про типы данных в mysql www.mysql.ru/docs/man/Column_types.html

#5 30 ноября 2024 в 11:14

Теперь общий принцип понятен )

Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.