Сегодня я покажу как с использование костыля на быструю руку соорудить табличку в админке для нашего компонента. Кошерный метод разработки описал Василий Наумкин, за что ему большое спасибо.
Для тех, кому на этих курсах пока слишком много информации и он хочет просто пощупать — как оно и где, подойдет мой метод.
У нас уже есть компонент, он работает, из форнтенда данные добавляются, теперь мы хотим видеть их в админке.
Скачиваем zip-архив из репозитория modExtra, заливаем его в корень сайта и распаковываем. В браузере открываем http://site-url.ru/modExtra-master/_build/build.transport.php. После этого идем в управление пакетами, нажимаем "Искать локально" и устанавливаем пакет modextra.
Теперь в папках /assets/components/ и /core/components/ появилась папка modextra. Находим и редактируем файл items.grid.js и все файлы в папке /core/components/modextra/processors/mgr/item/. Чтобы подогнать под себя смотрите комментарии в коде — там написано, что и где менять.
После этих действий можно открыть страничку нашего компонента (Компоненты -> modExtra). Список можно сортировать по любому столбцу, можно добавлять/редактировать/удалять записи. Только надписи не катят: "Создать предмет", "Удалить предмет" и прочее. Чтобы написать что-то свое, заходим в Система -> Управление словарями, выбираем пространство имен modextra и язык ru. Здесь меняем наименования, очищаем кеш сайта и любуемся.
Источник: http://modx.im/blog/docs/1956.htmlОтображение кастомных объектов в админке MODX (таблица ExtJS)
17 февраля 2014, 14:42
Сегодня я покажу как с использование костыля на быструю руку соорудить табличку в админке для нашего компонента. Кошерный метод разработки описал Василий Наумкин, за что ему большое спасибо.
Для тех, кому на этих курсах пока слишком много информации и он хочет просто пощупать — как оно и где, подойдет мой метод.
У нас уже есть компонент, он работает, из форнтенда данные добавляются, теперь мы хотим видеть их в админке.
Скачиваем zip-архив из репозитория modExtra, заливаем его в корень сайта и распаковываем. В браузере открываем http://site-url.ru/modExtra-master/_build/build.transport.php. После этого идем в управление пакетами, нажимаем "Искать локально" и устанавливаем пакет modextra.
Теперь в папках /assets/components/ и /core/components/ появилась папка modextra. Находим и редактируем файл items.grid.js и все файлы в папке /core/components/modextra/processors/mgr/item/. Чтобы подогнать под себя смотрите комментарии в коде — там написано, что и где менять.
После этих действий можно открыть страничку нашего компонента (Компоненты -> modExtra). Список можно сортировать по любому столбцу, можно добавлять/редактировать/удалять записи. Только надписи не катят: "Создать предмет", "Удалить предмет" и прочее. Чтобы написать что-то свое, заходим в Система -> Управление словарями, выбираем пространство имен modextra и язык ru. Здесь меняем наименования, очищаем кеш сайта и любуемся.
Источник: http://modx.im/blog/docs/1956.html
Объектная
http://revo.modx.ru/manager/index.php?a=55&context_key=web в MODX 2.2.x или на
http://revo.modx.ru/manager/?a=resource/create&context_key=web в MODX 2.3.x
,createEmployerPage: function(btn,e){ var createPage = MODx.action ? MODx.action['resource/create'] : 'resource/create'; MODx.loadPage(createPage, '&context_key=web'); }выдает так:PS Прошу прощения. Все работает. Видать чистка кеша не сразу помогает.
А можно еще маленький вопросик. Как повесить свою CMP на этот вызов?
Спасибо за уроки!
А можно ли создать несколько таблиц с переключением между ними по табам?
Но эти статьи я писал для того, чтобы можно было понять, что и как устроено в MODX. Этот способ пойдет, если нужно быстренько расширить функционал для какого-то конкретного проекта — мало ли какие у заказчиков задачи.
Как правильно разрабатывать именно компоненты рассказал Василий.
Если задача под конкретный проект, можно, в принципе, не заморачиваться на моментах чисто разработки, которым Василий в своем курсе уделяет много внимания (установка в отдельную директорию, пути и т п.)?
С другой стороны, путь, скорее всего, тупиковый — если модель нужно будет перегенерировать в процессе доработки, то при таком раскладе, скорее всего, будут проблемы.
Видимо, это оптимально — бэкэнд в одном компоненте, а фронтэнд — в другом…
Или я ошибаюсь?
Пакет найден... сейчас идёт подготовка к его установке. Загрузка рабочего пространства пакета... Рабочее пространство загружено, сейчас устанавливаем пакет... Skipping vehicle object of class modAction (data object exists and cannot be upgraded); criteria: Array ( [namespace] => modextra [controller] => index ) Skipping vehicle object of class modMenu (data object exists and cannot be upgraded); criteria: Array ( [text] => modextra ) Skipping vehicle object of class modChunk (data object exists and cannot be upgraded); criteria: Array ( [name] => tpl.modExtra.item ) Created table `dev_modextra_items` SQL: CREATE TABLE `dev_modextra_items` (`id` INTEGER unsigned NOT NULL AUTO_INCREMENT, `name` VARCHAR(100) NOT NULL DEFAULT '', `description` TEXT NULL, `active` TINYINT(1) NULL DEFAULT '1', PRIMARY KEY (`id`), INDEX `name` (`name`), INDEX `active` (`active`)) ENGINE=MyISAM Error removing field modExtraItem->active: Array ( [0] => 42000 [1] => 1090 [2] => You can't delete all columns with ALTER TABLE; use DROP TABLE instead ) Error adding index PRIMARY to modExtraItem: Array ( [0] => 42000 [1] => 1072 [2] => Key column 'id' doesn't exist in table ) Error adding index name to modExtraItem: Array ( [0] => 42000 [1] => 1072 [2] => Key column 'name' doesn't exist in table ) Error adding index active to modExtraItem: Array ( [0] => 42000 [1] => 1061 [2] => Duplicate key name 'active' ) Успешно установлен пакет modextra-1.0.0-betaА так же код довольно сильно отличается от той же заготовки которая используется в курсе у Василия. В той версии например для файла resolve.tables.php, в курсе показан один код, в самом Sendex другой, а в текущей заготовке третий (ещё тот квест надо сказать) и так далее по коду. PHP 5.5.9, MODX-2.4.0-rc1А вот по поводу разного кода могу ответить. Дело в том, что когда писали Sendex, modExtra уже существовал. Для того, чтобы Sendex работал, естественно, в код вносились правки, поэтому в заготовке и в компоненте код различается. Для того заготовка и нужна.
А различия между старой версией и новой объясняются тем, что мир не стоит на месте. Тем более Open Source. Люди находят лучшие решения для какой-то задачи, и предлагают дополнить или изменить код. Если автор согласен, он вносит эти изменения. Вот, кстати, тема, где недавно обсуждались изменения в modExtra: Update таблиц своего компонента
Я нашел решение этого вопроса, мне помог даунгрейд системы а именно до PHP 5.4 был 5.5.9 и Apache 2.2 был 2.4., mySQL и т.д.
Так как же помимо того что modExtra не создавала таблицы, CMP генератор так же отказывался создавать файлы связанные с моделью. Так же были замечены некоторые проблемы связанные со старым кодом и для меня подобное решение оказалось оптимальным выходом.
Попробовал переделать modExtra под свою таблицу, правда modExtra уже сильно изменился, но вроде всё изменил аналогично твоим рекомендациям.
Результат — белый экран при вызове modExtra.
Не посоветуешь, как отлаживать дополнения?
Попробуйте в файле /manager/index.php на первой строчке написать
@ini_set('display_errors',1);Я только начал изучать создание собственных компонентов. В изучении api modx очень помог Ваш сайт, спасибо.
Вопрос вот в чем — если Вы не практикуете данный способ, подскажите если не секрет, какой способ используете сейчас?.. Может создаете через migx свои таблицы и с ними уже работаете? Или может еще какой нибудь способ появился?