Евгений Webinmd

Евгений Webinmd

С нами с 07 января 2013; Место в рейтинге пользователей: #15
Евгений Webinmd
30 октября 2025, 16:58
+1
Обратил внимание, с радостью волью новый PR
Евгений Webinmd
22 сентября 2025, 14:12
+1
есть только такой ответ на данный момент
Евгений Webinmd
18 сентября 2025, 21:21
+1
Дашборд для минишопа, с аналитикой, графиками и прочим.
Евгений Webinmd
10 сентября 2025, 21:44
1
+4
из коробки такого функционала нет, но можно дописать. Надо внести изменения в файл
assets/components/fileattach/js/mgr/widgets/items.grid.js

1) добавить кнопку для открытия файлового менеджера

в районе строки 540, добавить кнопку вызова менеджера файлов, в блок
getTopBar: function (config) {

fields.push({
	xtype: 'button',
	cls: 'primary-button',
	text: _('upload'),
	handler: this.uploadFiles,
	scope: this
},{  // это вторая кнопка
	xtype: 'button',
	cls: 'primary-button',
	text: 'Из уже загруженных',
	handler: this.selectFiles,
	scope: this
});

2) Добавить handler

Тут вызывается this.selectFiles
этот handler надо прописать ниже, после метода uploadFiles

selectFiles: function(btn,e) { 

	var win = Ext.getCmp('fileattach-file'); 

	if(!win){ 
		var win = MODx.load({
			xtype: 'modx-browser'
			,openTo: 'files/' 
			,id: 'fileattach-file'
			,listeners: {
				'select':{fn:this.onBrowserSelect,scope:this}
			}
		});	 
	}

	win.show();

},

onBrowserSelect: function(data,field){  
	var value = data.url;

	//console.log(data);

	MODx.Ajax.request({
		url: FileAttach.config.connectorUrl,
		params: {
			action: 'mgr/browser', 
			url: data.url,
			size: data.size,
			ext: data.ext,
			shortname: data.shortName,
			name: data.name,
			docid: FileAttach.config.docid
		},
		listeners: {
			success: {
				fn: function() { 
					var store = Ext.getCmp('fileattach-grid-items').getStore(); 
					store.load({ params: { start: 0, limit: 20} });
					Ext.getCmp('fileattach-grid-items').getView().refresh(); 
				}, scope: this
			}
		}
	});
},

Этот код из рабочего проекта и решал мои задачи, изменяйте под ваши задачи
Евгений Webinmd
16 июля 2025, 13:14
+1
Попробуйте тут убрать round и поиграться с параметрами number_format

github
Евгений Webinmd
14 мая 2025, 23:44
2
+1
У меня tinymcerte
Для него делал следующим образом:

1) В системных настройках (tinymcerte.plugins) в список плагинов редактора добавил свой myButtons

2) создал папку myButtons и файл внутри

assets/components/tinymcerte/js/vendor/tinymce/plugins/myButtons/plugin.min.js

В самом файле следующий код.
Оставил добавление двух видов, кнопку и ссылку

tinymce.PluginManager.add('myButtons', function (editor, url) {

    // Add a button that opens a window
    editor.addButton('myButtonLink', {
        text: 'Кнопка ссылка',
        icon: false,
        onclick: function () {
            // Open window
            editor.windowManager.open({
                title: 'Параметры кнопки',
                minWidth: 500,
                body: [
                    {
                        type: 'textbox',
                        name: 'btnlink',
                        label: 'Ссылка',
                        tooltip: 'Если это ресурс на сайте, то указывать так: [[~33]] : где 33 - id ресурса/товара',
                    },
                    {
                        type: 'textbox',
                        name: 'btntext',
                        label: 'Текст на кнопке',
                        tooltip: '',
                    },
                    {
                        type: 'listbox',  
                        name: 'btnclass',  
                        label: 'Вид кнопки', 
                        values: [
                            { text: 'Зеленая', value: 'btn-green' },
                            { text: 'Синяя', value: 'btn-blue' }
                        ]
                    }
                ],
                onsubmit: function (e) { 
                    if (!e.data.btnlink) {  
                        alert('Укажите ссылку для кнопки!');
                        return false;
                    }    
                    editor.insertContent('<a href="'+e.data.btnlink+'" class="btn btn-middle '+e.data.btnclass+'">'+e.data.btntext+'</a>');
                }
            });
        }
    });


    // Написать нам
    editor.addButton('myButtonScribeUs', {
        text: 'Написать нам',
        icon: false,
        onclick: function () { 
            editor.insertContent('<button type="button" class="btn btn-dark btn-middle" data-toggle="modal" data-target="#write-us" data-tab="0">Написать нам</button>'); 
        }
    });

});

Как это выглядит по итогу

Евгений Webinmd
10 апреля 2025, 11:45
1
+1
Рендер находится тут github.com/modx-pro/miniShop2/blob/master/assets/components/minishop2/js/mgr/misc/ms2.utils.js#L15

Но это вам придется менять исходники. Если делать правильно, то надо расширять эту таблицу и выводить свои поля. Это чуть сложнее. Пример подобного расширения таблиц описан тут modx.pro/howto/24899
Евгений Webinmd
18 марта 2025, 13:53
0
Процессоры лежат тут:
core/components/minishop2/processors/mgr/

В статье описано как не изменять исходники, там же и про процессор написано.
При большом желании можно изменить исходник, проверить работает ли сама идея и потом уже переопределять
Евгений Webinmd
17 марта 2025, 13:31
0
userId — нет такого параметра у Profile
есть только user
Евгений Webinmd
17 марта 2025, 12:52
0
Вам нужно переопределить процессор getlist скорей всего. Посмотрите вот эту статейку, там есть кусок описания про переопредление. ВОзможно вам поможет.
modx.pro/howto/24899
Евгений Webinmd
08 декабря 2024, 18:55
+1
У меня изображения внутри migx сделаны через отдельное tv поле migx_img
Для вывода картинки достаточно будет для внутреннего migx добавить такой же источник файлов что и для ТВ поля изображения и прописать в конфиге «sourceFrom»:«migx»

{"field":"image","caption":"Изображение","inputTV":"migx_img", "sourceFrom":"migx"}
Евгений Webinmd
03 декабря 2024, 19:01
+1
xtype: modx-combo-user
Это xtype (тип поля) самого MODX, выводит всех пользователей modUser
Список всех возможных типов полей
Евгений Webinmd
03 декабря 2024, 14:17
+1
Мне кажется отдельная документация это лишняя работа. Тут бы демо версию нормально допилить
Евгений Webinmd
29 ноября 2024, 14:52
0
по пункту 4 — используйте компонент планировщик (scheduler) для отложенной отправки данных куда угодно, хоть в crm хоть в яндекс
Евгений Webinmd
06 августа 2024, 16:44
0
боюсь что потом за этот косарик буду должен отработать неделю
Евгений Webinmd
10 апреля 2024, 00:38
0
В документации указано так
&optionFilters=`{"core_count:>":4}`

На fenom скорей всего будет так
'optionFilters' => '{ "core_count:>":4 }'
Евгений Webinmd
11 февраля 2024, 13:18
+1
попробуйте OnParseDocument и заменить
{'param' | lexicon}
на

[[%param]]