Дополнительные поля в любом виджете

InstantCMS 2.X
#1 31 августа 2025 в 10:51

Добрый день! Подскажите каким образом можно добавить в любой виджет  свое поле с настройками, например в виджет меню мне нужно добавить поле и удалить поле (скрин ниже)

Изображение 

Изображение

А так же как убрать эту настройку, удаляю виджет получаю ошибку 

Изображение

Тему bootstrap не использую!!!

#2 31 августа 2025 в 11:04

 Михаил, чтобы добавить поле, в файле опций options.form.php

  1. new fieldТипПоля('options:имя_поля', [
  2. 'title' => 'Заголовок поля'
  3. ]),


Где ТипПоля — например string или number, а имя_поля — системное имя для использования в шаблоне.

А так в целом вообще неясно, какую цель вы преследуете 😀

#3 31 августа 2025 в 11:23
 Михаил, чтобы добавить поле, в файле опций options.form.
Pechora

в таком случае как понимаю если буду обновлять систему все пропадет, не подходит такой вариант

#4 31 августа 2025 в 12:32

 Михаил, сделайте копию виджета с другим системным именем, и вносите в нем какие угодно правки

#5 31 августа 2025 в 20:32
 Михаил, сделайте копию виджета с другим системным именем, и вносите в нем какие угодно правки
Pechora

тоже не вариант, плодить кучу однотипных виджетов, нужен hook,  кто готов помочь с этим с меня вознаграждение 

#6 1 сентября 2025 в 09:31

Вам придётся найти другой путь для осуществления вашей задачи. Добавить поле в виджет нельзя без изменения системных файлов. Да и с изменениями не думаю что получится.

#7 1 сентября 2025 в 10:02

Добавить поле в виджет нельзя без изменения системных файлов

Lora

можно ведь. Двойку, попробовав раз, за это и не бросают, что на каждый чих есть свой хук. А если нет, этот хук добавляют.

Посмотрите как добавлено описание в форму виджета в моем небольшом компоненте instantcms.ru/forum/kak-dobavit-tekstovoe-pole-s-redaktorom-dlja-opisanija-v-vidzhet.html#post-364923

Подобным образом можно (и нужно, без правки системных файлов) убрать ненужные поля из формы. И т.п.

#8 1 сентября 2025 в 22:50

оказалось все проще создал свой компонент по аналогии с bootstrap4 и там свои кухи создал, чуть позже опишу решение может кому пригодится 

Добавлено спустя Только что

Посмотрите как добавлено описание в форму виджета в моем небольшом компоненте instantcms.ru/forum/kak-dobavit-tekstovoe-pole-s-redaktorom-dlja-opisanija-v-vidzhet.html#post-364923

Zau4man

благодарю, сейчас посмотрю 

Добавлено спустя 12 часов

Посмотрите как добавлено описание в форму виджета в моем небольшом компоненте

Zau4man

не работает ни ваш вариант ни мой, вернее в админке в виджете все поля выводятся, а в шаблоне нет пробовал ваш вариант вывести во wrapper.tpl.php  

  1. <?php if(!empty($widget['description'])){ ?>
  2. <div><?php html($widget['description']); ?></div>
  3. <?php } ?>

ничего не выводит, свой вариант сделал в компоненте файл widget_menu_form.php 

  1. <?php
  2.  
  3. class onThemeWidgetMenuForm extends cmsAction {
  4. public function run($_data){
  5.  
  6. list($form, $widget, $widget_object, $template_name) = $_data;
  7.  
  8. $template = new cmsTemplate($template_name);
  9.  
  10. $manifest = $template->getManifest();
  11.  
  12. if(empty($manifest['properties']['vendor'])){
  13. return $_data;
  14. }
  15.  
  16. // Нам нужны только шаблоны нашей темы
  17. if($manifest['properties']['vendor'] !== 'theme'){
  18. return $_data;
  19. }
  20.  
  21. // УДАЛЯЕМ поле options:class из секции menu_options
  22. //$form->removeField('menu_options', 'options:class');
  23.  
  24.  
  25. // Добавляем новое поле
  26. $form->addField('menu_options', new fieldString('options:class_custom', [
  27. 'title' => 'CSS класс меню',
  28. 'hint' => ''
  29. ]));
  30.  
  31. return [$form, $widget, $widget_object, $template_name];
  32.  
  33. }
  34. }

в файле templates\desktop\assets\ui\menu.tpl.php вывожу как  

  1. <ul class="<?php echo $class_custom; ?>"> и дальше меню из шаблона default

получаю ошибку неизвестная переменная (( как выводить не понятно 

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

Похожие темы

Похожее в блогах

🍪Мы используем файлы cookie для работы сайта. Читать подробнее.