Обновлено: 03 апреля 2016, 21:26
 Marabar

MIGXdb - управление дочерними ресурсами.

MIGX — это обычное дополнительное поле (TV), который позволяет сгруппировать множество TV в один — будь то текст, изображение, файлы, чекбоксы и т.д. В этом топике речь пойдёт о MIGXdb. С помощью MIGXdb можно работать не только с существующими таблицами базы данных, но можно создать пользовательские таблицы базы данных и связать их с ресурсами в дереве документов, при этом отображение самих ресурсов можно опустить. Очень удобно для управления большим количеством документов на сайте. Качаем MIGX с репозитория MODX и поехали дальше.

Создание конфигурации


В этом топике речь пойдёт о создании дочерних ресурсов и работа с существующими таблицами базы данных. Черпал вдохновение отсюда. После установки, MIGX должен появится в основном меню менеджера в разделе Компоненты, заходим в управление MIGX. Первым делом создадим новую конфигурацию для MIGXdb-TV, имя конфигурации должно быть уникальным. Так как в этой статье я рассматриваю дочерние ресурсы к блогу, то имя конфигурации будет: resourcesBlog. В табе MIGX жмём добавить элемент, в открывшемся окне заполняем поля:
Создание конфигурации

  • Name — resourcesBlog
  • Замена «Добавить элемент» — Создать топик. Этот текст будет отображаться на кнопке добавления нового ресурса.
  • Form Caption — Дочерний ресурс
  • unique MIGX ID — resourcesBlog. Уникальный ID.
Переходим в таб MIGXdb-Settings

Настройка MIGXdb


Заполним необходимые поля:
  • Classname — modResource
  • Processors Path — resourcesBlog
  • getlist defaultsort — id
  • getlist defaultsortdir — desc
  • Prefix — default Prefix (префикс таблиц БД, по умолчанию: modx_). Если префикс был изменён, здесь указать — Custom Prefix, а ниже, в поле — свой префикс.
  • Load Grid — by Button
  • Check Resource — yes
  • Has Extra Connection Table — yes
После заполнения полей жмём — Выполнено. Вновь созданная конфигурация появится в таблице управления MIGX. Для редактирования и добавления новых полей, стандартно — правая кнопка мышки и редактировать, также здесь есть Экспорт/Импорт, где можно ввести Json-код для быстрого создания всех необходимых полей. Но мы будем настраивать вручную, для лучшего восприятия процесса. В дальнейшем, на новую установку код можно взять отсюда.
Перед тем как пойдём дальше, проверяем существование папки childstutorial в /core/components/mgix/processors/mgr/. Если существует — переименовываем в resourcesBlog, если нет — качаем здесь и заливаем на сервер в выше указанную директорию. Наша созданная конфигурация будет искать этот процессор. И для лучшей наглядности, предлагаю сразу же создать новое TV с одноимённым названием — resourcesBlog, в параметрах ввода указываем тип ввода — migxdb, в разделе Конфигурации указываем: resourcesBlog. Это TV должно быть доступно для шаблона, который имеет дочерние ресурсы.
Теперь, для создания нового дочернего ресурса нам нужно открыть документ-родитель для редактирования и в табе Дополнительные поля создать новый ресурс. Но сначала нужно добавить дополнительные поля и столбцы.

Таблица дополнительного поля resourcesBlog.


Добавим дополнительные столбцы для TV resourcesBlog. Допустим, это будут: ID, Заголовок, Краткое описание, Опубликован (OK), Удалён. Откроем для редактирования созданную конфигурацию MIGX и в табе Columns жмём Добавить элемент.
  • Header — ID (шапка)
  • Field — id (поле)
  • Column width — 10 (ширина столбца, px)
  • Sortable — yes (сортировать)
  • Show in Grid — yes (показывать в сетке)
Жмём Выполнено и Добавить элемент:
  • Header — Заголовок (шапка)
  • Field — pagetitle (поле)
  • Column width — 100 (ширина столбца, px)
  • Sortable — yes (сортировать)
  • Show in Grid — yes (показывать в сетке)
  • Renderer — this.renderRowActions (это добавит в поле две кнопки, таких как: Редактировать и Опубликовать или Снять с публикации зависит от статуса документа.)
Следующий столбец:
  • Header — Краткое описание (шапка)
  • Field — introtext (поле)
  • Column width — 150 (ширина столбца, px)
  • Sortable — yes (сортировать)
  • Show in Grid — yes (показывать в сетке)
Ещё один:
  • Header — OK (шапка)
  • Field — published (поле)
  • Column width — 20 (ширина столбца, px)
  • Sortable — no (не сортировать)
  • Show in Grid — yes (показывать в сетке)
  • Renderer — this.renderCrossTick (визуализация — галочки или крестик)
Далее:
  • Header — Удалён (шапка)
  • Field — deleted (поле)
  • Column width — 10 (ширина столбца, px)
  • Sortable — no (не сортировать)
  • Show in Grid — no (не показывать в сетке)
Вот что получилось на данный момент.
Таблица


Добавим к таблице кнопки действий. Перейдём в таб Actionbuttons и отметим следующие чекбоксы: addItem, bulk, toggletrash. После этого наша кнопка Создать топик станет активной, и появятся другие. При нажатии на неё открывается пустое окно, создадим в этом окне две вкладки — это Ресурс, где будут поля для заголовка, расширенного заголовка, описания и т.д. и Содержание, где будем подгружать редактор TinyMCE для основного контента. Вкладка FormtabsДобавить элемент, в открывшемся окне заполнить: CaptionРесурсы, Display above Tabsno, в поле FieldsДобавить элемент.
  • Fieldname — pagetitle
  • Caption — Заголовок
  • Description is Code — no
Вообщем-то здесь всё стандартно, используется API MODX. Для расширенного заголовка Fieldnamelongtitle, для краткого содержания ресурсов — introtext и в поле Input TV typetextarea и т.д. Остановимся на двух моментах — это показа в дереве ресурсов и использование шаблона по умолчанию. Итак, первое:
  • Fieldname — show_in_tree
  • Caption — Показывать в дереве
  • Description is Code — no
  • Input TV type — listbox
  • Input Option Values — Да==0||Нет==1 (зависит от системных настроек, если в настройках по умолчанию задано — не показывать в меню.)
  • Default Value — 0
Шаблон по умолчанию:
  • Fieldname — template
  • Description is Code — no
  • Input TV type — hidden
  • Default Value — (здесь указать id шаблона для дочерних ресурсов)
Сохраняем все открытые окна и вкладка FormtabsДобавить элемент, в открывшемся окне заполнить: CaptionСодержание, Display above Tabsno, в поле FieldsДобавить элемент.
  • Fieldname — content
  • Caption — Содержимое ресурса
  • Description is Code — no
  • Input TV type — richtext (подгружаем редактор, TinyMCE должен быть установлен)
Вкладка Contextmenues, отмечаем чекбокс recall_remove_delete — как я понимаю, это удаление с подтверждением. Смотрим что получилось:
Поля ресурса


Добавим фильтр поиска к нашему TV. Для этого перейдём на вкладку Db-Filters и добавляем элемент
  • filter Name — search
  • Label — Поиск
  • Empty Text — Поиск по заголовку
  • Filter Type — textbox
  • getlist-where — (смотри в коде)
{"pagetitle:LIKE":"%[[+search]]%"}
Надеюсь понятно разжевал)). Что не понятно, задавайте вопросы — вместе разберём. А пока всё.
   Marabar Инструкции 0    8 0

Комментарии ()

  1. Сергій 11 апреля 2015, 12:10 # 0
    Даже зарегистрировался, чтобы оставить комментарий. Спасибо за разъяснение, потому что нужная вещь, а информации мало. Пока что не пользуюсь MIGXdb, но понимаю, что в ближайшее время придется воспользоваться. Если будут вопросы по MIGXdb, обязательно буду обращаться здесь в комментариях.
    1. Alexander 03 апреля 2016, 16:17 # 0
      Отличная статья!
      Одно «но»: при попытке скачать процессоры сайт выдаёт 403
      1. Marabar 03 апреля 2016, 21:42 # 0
        Доступ запрещён? Странно.
        Вроде поправил, хотя у меня не выдавал эту ошибку.
        1. Alexander 04 апреля 2016, 03:40 # 0
          Теперь скачал, спасибо.
      2. MadSem 19 мая 2016, 01:23 # 0
        Супер статья!

        А как потом выводить информацию из Migxdb? Есть ли возможность вывести вместе с pdoresurced?
        1. Алексей 11 августа 2016, 17:31 # 0
          три дня шарил по инету в поисках чего то подобного. Спасибо за статью, буду пробовать.
          1. Штиф Васлер 12 апреля 2018, 19:56 # 0
            А как вместо ресурсов разбить пагинацией, например файлы? Вопрос пагинации в MIGx наверно наиболее насущный, т.к. ее всегда сильно не хватает
            1. Marabar 12 апреля 2018, 20:02 # 0
              Не подскажу, MIGX-ом давно не занимаюсь и не отслеживаю.
              Для меня, сейчас, проще своё написать.
              1. Штиф Васлер 12 апреля 2018, 20:20 # 0
                Как написать свой загрузчик файлов с пагинацией?) Долго, дорого?)
                1. Marabar 12 апреля 2018, 20:31 # 0
                  Не долго я думаю, всё зависит от предоставленного тех. задания.
                  Смотрите MIGX использует TV-поля, я их больше не использую, и считаю их злом для MODX — это моё мнение.

                  Присылайте ТЗ на marat@marabar.ru -скажу стоимость.
                  1. Штиф Васлер 12 апреля 2018, 20:47 # 0
                    Спасибо, сейчас пришлю.

                    А в качестве беседы — почему считаете TV «злом»?
                    1. Marabar 12 апреля 2018, 21:12 # 0
                      Каждое TV — это объект, если на странице, допустим, по 10 TV, и товаров 1000, то TV будет:10 000
                      Выборка ужасная с MIGX-а.

                      У меня был сайт 5000 товаров, грузился в пределах 1 минуте. Обратились ко мне по загрузке, выяснилось, при загрузке стр. подтягивались более 2-хсот тысяч записей TV.
                      Переписал, исключил все TV — загрузка в пределах 0.10-0.20
                      1. Штиф Васлер 12 апреля 2018, 21:24 # 0
                        Ясно. Отличный показательный пример) Спасибо
                        1. sozdaitesite.ru 14 июня 2018, 01:08 # 0
                          а каким образом заменяете тв и migx?

                          создаете дополнительные таблицы из нескольких полей — это если нужно заменить migx?
                          или просто добавляете несколько полей к основной таблице ресурса для тех полей, которые дложны использоваться в каждом ресурсе?
                          1. Marabar 14 июня 2018, 12:04 # 0
                            Если много данных, то через кастомную таблицу. Если мало, то можно добавить колонки в уже существующие.



                  Вы должны авторизоваться , чтобы оставлять комментарии.

                  Marabar 21 сентября 2018, 00:32
                  Login в MODX revolution 25
                  Marabar 17 мая 2018, 12:22
                  Выводим облако тегов в MODX revo 17
                  medortex 14 июля 2017, 16:26
                  Меню Аккордеон в MODX revo 54
                  Madao 16 мая 2017, 18:28
                  msMiniCartDynamic 3
                  Семён 05 мая 2017, 23:30
                  Создание ресурсов из фронтенда 41
                  Филитович Владимир 26 февраля 2017, 22:25
                  Apache 2.2.22, установка и настройка 41
                  valery 30 ноября 2016, 15:51
                  phpMyAdmin 3.5.1, установка и настройка 3