Николай

Николай

С нами с 09 ноября 2013; Место в рейтинге пользователей: #57
Николай Савин
20 февраля 2019, 14:03
2
+1
В админке на каждой странице каждое поле отдельно жестко прописано, с указанием всех свойств (строка, текст, число). Это сделано в js массиве.
Если ты что то новое добавляешь в карту объекта и базу данных (уточню на всякий случай что еще и таблицу базы данных нужно расширять ручками) — то так же ручками нужно добавлять новый дополнительный код в js массив полей.
Обычно делают отдельный плагин, чтобы не вносить правки в исходный код MODX.
Вот пример, прямо из рабочего проекта дернул
switch ($modx->event->name){
case 'OnDocFormPrerender':
        $modx->controller->addHtml("
            <script type='text/javascript'>               
                
             Ext.ComponentMgr.onAvailable('modx-panel-resource', function(){                 
                 if(this.items[1].items[0].id == 'minishop2-product-tab'){
                       var leftCol = this.items[1].items[0].items[0].items[0].items[0].items[0].items[0].items[0];
                 }else{
                      if(this.items[1].items[0].id== 'modx-resource-settings'){
                         var leftCol = this.items[1].items[0].items[0].items[0];
                     }
                     if(this.items[1].items[1].id == 'modx-resource-settings'){
                         var leftCol = this.items[1].items[1].items[0].items[0];
                     }                    
                     
                 } 
                 
                 var kz_title = {
                   anchor: '100%',
                   description: '<b>[[*kz_title]]</br>Заголовок на казахском</b>',
                   fieldLabel: 'Заголовок на казахском',
                   id: 'modx-resource-kz-title',
                   maxLength:255,
                   msgTarget: 'under',
                   name:'kz_title',
                   xtype:'textfield'
                }
                
                leftCol.items.splice(2, 0,  kz_title); 
                
                var kz_description = {
                   anchor: '100%',
                   description: '<b>[[*kz_description]]</br>Описание на казахском</b>',
                   fieldLabel: 'Описание на казахском',
                   id: 'modx-resource-kz-description',
                   maxLength:255,
                   msgTarget: 'under',
                   name:'kz_description',
                   xtype:'textarea'
                }
                                               
                leftCol.items.splice(4, 0,  kz_description);
                
                
                
            });
        </script>");
        break;
}
На выходе получилось вот так prntscr.com/mnm25m