Многие используют MIGX для создания фотогалерей, но этим его функционал не ограничивается. Это настоящий конструктор для управления данными любых таблиц БД. Можно даже выводить список дочерних ресурсов (документов MODX) в любом контейнере. Об этом и пойдет речь в данной статье. Кое что я узнал из документации MIGDB, но, на сколько я понял, она уже порядком устарела и многое там просто не работает.
Я расскажу как сделать такую таблицу с вложенными ресурсами:
1. Открыть «Компоненты» -> «MIGX». Перейти на вкладку «MIGX». Нажать кнопку «Добавить элемент».
2. На вкладке «Settings» ввести имя (Name) конфигурации, например «child_resources». Нажать кнопку «Выполнить».
Можно было бы очень долго расписывать что где нажать и куда что ввести, но сделаем проще. Я дам готовую конфигурацию, а вы настроите под себя.
3. Кликнуть правой кнопкой мыши по строке нашей конфигурации и выбрать «Экспорт/Импорт».
В поле в появившемся окне вставить такой JSON массив:
{ "formtabs":[ { "MIGX_id":1, "caption":"Основные данные", "print_before_tabs":"0", "fields":[ { "MIGX_id":1, "field":"pagetitle", "caption":"Заголовок", "description":"", "description_is_code":"0", "inputTV":"", "inputTVtype":"", "configs":"", "sourceFrom":"config", "sources":"[]", "inputOptionValues":"", "default":"" }, { "MIGX_id":10, "field":"alias", "caption":"Псевдоним", "description":"", "description_is_code":"0", "inputTV":"", "inputTVtype":"", "configs":"", "sourceFrom":"config", "sources":"[]", "inputOptionValues":"", "default":"" }, { "MIGX_id":6, "field":"introtext", "caption":"Краткое описание", "description":"", "description_is_code":"0", "inputTV":"", "inputTVtype":"textarea", "configs":"", "sourceFrom":"config", "sources":"[]", "inputOptionValues":"", "default":"" }, { "MIGX_id":7, "field":"image", "caption":"Картинка", "description":"", "description_is_code":"0", "inputTV":"image", "inputTVtype":"", "configs":"", "sourceFrom":"config", "sources":"[]", "inputOptionValues":"", "default":"" }, { "MIGX_id":4, "field":"price", "caption":"Цена", "description":"", "description_is_code":"0", "inputTV":"price", "inputTVtype":"", "configs":"", "sourceFrom":"config", "sources":"[]", "inputOptionValues":"", "default":"" }, { "MIGX_id":5, "field":"context_key", "caption":"Контекст", "description":"", "description_is_code":"0", "inputTV":"", "inputTVtype":"listbox", "configs":"", "sourceFrom":"config", "sources":"[]", "inputOptionValues":"catalog||web", "default":"catalog" }, { "MIGX_id":2, "field":"template", "caption":"Шаблон", "description":"", "description_is_code":"0", "inputTV":"", "inputTVtype":"hidden", "configs":"", "sourceFrom":"config", "sources":"[]", "inputOptionValues":"", "default":5 }, { "MIGX_id":8, "field":"show_in_tree", "caption":"Показывать в дереве?", "description":"", "description_is_code":"0", "inputTV":"", "inputTVtype":"listbox", "configs":"", "sourceFrom":"config", "sources":"[]", "inputOptionValues":"no==0||yes==1", "default":"" }, { "MIGX_id":9, "field":"published", "caption":"Опубликован", "description":"", "description_is_code":"0", "inputTV":"", "inputTVtype":"hidden", "configs":"", "sourceFrom":"config", "sources":"[]", "inputOptionValues":"", "default":1 } ] }, { "MIGX_id":2, "caption":"Подробное описание", "print_before_tabs":"0", "fields":[ { "MIGX_id":1, "field":"content", "caption":"Описание", "description":"", "description_is_code":"0", "inputTV":"", "inputTVtype":"richtext", "configs":"", "sourceFrom":"config", "sources":"[]", "inputOptionValues":"", "default":"" } ] } ], "contextmenus":"recall_remove_delete", "actionbuttons":"addItem||bulk||toggletrash", "columnbuttons":"update||publish||unpublish||recall_remove_delete", "filters":[ { "MIGX_id":1, "name":"search", "label":"search", "emptytext":"Поиск...", "type":"textbox", "getlistwhere":{ "pagetitle:LIKE":"%[[+search]]%", "OR:longtitle:LIKE":"%[[+search]]%", "OR:content:LIKE":"%[[+search]]%" }, "getcomboprocessor":"", "combotextfield":"", "comboidfield":"", "comboparent":"", "default":"" } ], "extended":{ "migx_add":"Добавить", "formcaption":"Дочерний ресурс", "update_win_title":"", "win_id":"child_resources", "maxRecords":"", "addNewItemAt":"bottom", "multiple_formtabs":"", "extrahandlers":"", "packageName":"", "classname":"modResource", "task":"resconnections", "getlistsort":"id", "getlistsortdir":"desc", "use_custom_prefix":"0", "prefix":"", "grid":"", "gridload_mode":1, "check_resid":"0", "check_resid_TV":"", "join_alias":"", "has_jointable":"yes", "getlistwhere":"", "joins":"", "cmpmaincaption":"", "cmptabcaption":"", "cmptabdescription":"", "cmptabcontroller":"", "winbuttons":"", "onsubmitsuccess":"", "submitparams":"" }, "columns":[ { "MIGX_id":1, "header":"ID", "dataIndex":"id", "width":50, "sortable":true, "show_in_grid":1, "renderer":"", "clickaction":"", "selectorconfig":"", "renderchunktpl":"", "renderoptions":"[]" }, { "MIGX_id":2, "header":"Заголовок", "dataIndex":"pagetitle", "width":300, "sortable":true, "show_in_grid":1, "renderer":"this.renderRowActions", "clickaction":"", "selectorconfig":"", "renderchunktpl":"", "renderoptions":"[]" }, { "MIGX_id":3, "header":"Цена", "dataIndex":"price", "width":100, "sortable":true, "show_in_grid":1, "renderer":"", "clickaction":"", "selectorconfig":"", "renderchunktpl":"", "renderoptions":"[]" }, { "MIGX_id":4, "header":"Опубликован", "dataIndex":"published", "width":100, "sortable":"false", "show_in_grid":1, "renderer":"this.renderCrossTick", "clickaction":"", "selectorconfig":"", "renderchunktpl":"", "renderoptions":"[]" }, { "MIGX_id":5, "header":"Удален", "dataIndex":"deleted", "width":"", "sortable":"false", "show_in_grid":"0", "renderer":"", "clickaction":"", "selectorconfig":"", "renderchunktpl":"", "renderoptions":"[]" } ] }
Готов интерфейс управления ресурсами.
4. Создать файл конфигурации /core/components/migx/configs/grid/grid.child_resources.config.inc.php с таким содержимым:
<?php $this->customconfigs['idfield_local'] = 'parent'; $this->customconfigs['includeTVs'] = 1; $this->customconfigs['includeTVList'] = 'price,image';
Как вы догадались, includeTVList это список всех TV, которые вам нужны в компоненте.
5. Снова кликнуть по строке конфигурации «child_resources» и выбрать «Редактировать». Перейти «Formtabs» -> «Основные данные» -> «Редактировать». Откроется список всех полей. Здесь надо настроить имена полей и TV, которые вам нужны.
6. Как видим, для поля «image» установлен «Input TV» — «image». Если такой TV-параметр (дополнительное поле) ещё не создан, то нужно его создать, назначить тип ввода «Изображение» и сделать доступным для нужного шаблона. Так же с остальными TV.
7. Открыть редактирование поля «template», перейти на вкладку «Input Options» и в поле «Default Value» ввести ID шаблона дочерних ресурсов, которыми будем управлять через наш компонент. Так же следует настроить поле «context_key». Выставить там нужные контексты.
8. Теперь нужно сделать чтобы список ресурсов появлялся при редактировании ресурсов с соответствующим шаблоном. Создаем TV, например с именем «child_resources». Тип ввода указать «migxdb», в поле «Конфигурации» ввести название созданной ранеее конфигурации («child_resources»).
Сделать доступным этот TV для соответствующих ресурсам-контейнерам шаблонов.
9. На этом можно было бы закончить, но т.к. MIGX ещё сыроват мне пришлось поправить процессоры в папке "/processors/mgr/resconnections/". Взять из можно здесь. Ещё нужно обновить код файла migx.class.php.
Теперь всё должно работать как надо.
Таким способом вы можете сделать управление для любых данных. С помощью MIGXDB можно создавать и редактировать свои таблицы в БД. Об этом написано здесь.
ссылка на оригинал статьи http://habrahabr.ru/post/196396/
Добавить комментарий