- PVSM.RU - https://www.pvsm.ru -
Не устаю удивляться возможностям, которые предоставляет компонент MIGX [1] от Bruno17 [2] для MODX Revolution. Выглядит он пока неказисто и встречаются ошибочки, но критических проблем нет. Всё, что написано в данной статье, актуально для версии 2.5.8-pl (последняя на данный момент).
Многие используют MIGX для создания фотогалерей [3], но этим его функционал не ограничивается. Это настоящий конструктор для управления данными любых таблиц БД. Можно даже выводить список дочерних ресурсов (документов MODX) в любом контейнере. Об этом и пойдет речь в данной статье. Кое что я узнал из документации MIGDB [4], но, на сколько я понял, она уже порядком устарела и многое там просто не работает.
Я расскажу как сделать такую таблицу с вложенными ресурсами:
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/". Взять из можно здесь [5]. Ещё нужно обновить код файла migx.class.php [6].
Теперь всё должно работать как надо.
Таким способом вы можете сделать управление для любых данных. С помощью MIGXDB можно создавать и редактировать свои таблицы в БД. Об этом написано здесь [7].
Автор: Andchir
Источник [8]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/modx/44993
Ссылки в тексте:
[1] MIGX: http://modx.com/extras/package/migx
[2] Bruno17: https://github.com/Bruno17
[3] фотогалерей: http://rtfm.modx.com/extras/revo/migx/migx.backend-usage
[4] документации MIGDB: http://rtfm.modx.com/extras/revo/migxdb/migxdb.tutorials/migxdb.manage-child-resources-in-a-grid-tv-with-help-of-migxdb
[5] здесь: https://bitbucket.org/andchir/migx/src/873758a934e867c87da6f7efe310b9be134c2771/core/components/migx/processors/mgr/resconnections?at=master
[6] migx.class.php: https://bitbucket.org/andchir/migx/src/873758a934e867c87da6f7efe310b9be134c2771/core/components/migx/model/migx/migx.class.php?at=master
[7] здесь: http://modx-shopkeeper.ru/documentation/modx-revolution/tovaryi-iz-otdelnoj-tabliczyi.html
[8] Источник: http://habrahabr.ru/post/196396/
Нажмите здесь для печати.