Наверх

Создаем свою сборку MODX REVO


Уже довольно давно существует скрипт от bezumkin для создания сайтов на сервере с уже установленными необходимыми пакетами.

Но иногда нужно быстренько развернуть сайт на обычном shared-хостинге. Я как-то сделал себе отдельный сайтик, где настроил нужные мне дополнения, создал файлы robots.txt и sitemap.xml, настроил дружественные URL и прочие мелочи. Соответственно, если нужно было развернуть новый сайт я брал свою заготовку, переносил ее на новое место и занимался уже созданием сайтов.

Но тут решил попробовать сделать свою заготовку еще более простой в использовании — скачал, установил и все. Не нужно менять пути, не нужно в конфиге прописывать доступ к базе и пр.

В MODX REVO очень удобный установщик, я решил использовать его. В папку с установкой MODX я перенес свою папку assets, core/components и core/packages

После этого зашел в базу данных с помощью phpMyAdmin, удалил таблицы modx_users и modx_user_attributes, чтобы на каждом сайте можно было ставить разные доступы прямо во время установки — чтобы не приходилось менять пароль уже в админке.

Дамп этой базы данных положил в папку setup (чтобы он удалился по окончании установки) и в файл setup/controllers/complete.php (перед последней строчкой) добавил следующие строки для импорта файла базы данных в новую базы (затираются все таблицы, кроме modx_users и modx_user_attributes):

// Импортируем файл базы данных
$mysqlDatabaseName = $install->settings->get('dbase');
$mysqlUserName = $install->settings->get('database_user');
$mysqlPassword = $install->settings->get('database_password');
$mysqlHostName = $install->settings->get('database_server');
$mysqlImportFilename = MODX_SETUP_PATH . 'ilyaut_modx.sql'; // это дамп базы

$command='mysql -h' .$mysqlHostName .' -u' .$mysqlUserName .' -p' .
$mysqlPassword .' ' .$mysqlDatabaseName .' < ' .$mysqlImportFilename;
exec($command);
// Конец импорта

Таким образом после всей установки мы импортируем базу уже со всеми нужными нам ресурсами, сниппетами, ТВ, чанками, пакетами и пр.

Ну и на последок, кому интересно, моя сборка: ilyaut-0.0.1.zip. Скачиваем, разархивируем, заходим по адресу site.ru/setup/ и устанавливаем как обычный MODX. Не забудьте переименовать файл ht.access в .htaccess

Список установленных дополнений и настроек:
  • Настроен редирект с адреса www.site.ru на site.ru
  • В дереве ресурсов добавлены два новых ресурса: robots.txt и sitemap.xml
  • Стандартный шаблон изменен — разбит на чанки header, aside, footer и пр.
  • Добавлен ТВ img с типом ввода — Изображение
  • Созданы чанки с вызовом Wayfinder, getPage, getResources
  • Добавлен плагин editButton от />
  • В настройках включены дружественные URL
  • Установлены пакеты:
    • Ace
    • Batcher
    • Breadcrumbs
    • DirectResize Revo
    • FormIt
    • getPage
    • getResourceField
    • getResources
    • GoogleSiteMap
    • Login
    • phpThumbOf (с уже отключенным плагином phpThumbOfCacheManager)
    • Quip
    • TinyMCE
    • translit (настроена транслитерация псевдонимов)
    • Wayfinder

Вроде, все. Если будут вопросы, задавайте, постараюсь ответить. Периодически стараюсь обновлять пакеты и версию MODX, так что можно скачивать сборку по ссылке. Кроме того, можно запросто сделать свою сборку и работать с ней.

UPD. Ах, да, я не стал заморачиваться с префиксами, оставил стандартный префикс modx_, так что если вам нужны другие префиксы, просто сделайте свою сборку.

G+

UPD-2. Перенес топик в соответствующий блог.

Оригинал статьи community.modx-cms.ru/blog/research/8928.html


20 комментариев

  1. Роман 03 марта 2014, 00:44 # 0
    А может быть не архивом и на гитхаб?
    1. Илья Уткин 03 марта 2014, 09:28 # 0
      Нее… Эту версию сборки я давно уже не использую. Статья нужна только для того, чтобы показать — вы можете делать сборки, чтобы ускорять разработку сайтов. Не нужно каждый раз делать одни и те же действия по установке и настройке компонентов.

      А используемую версию сборки выложить не могу — там прописаны все мои стандартные доступы (SMTP, привязка к магазину SimpleDream), указаны электронные адреса для форм обратной связи и пр.

      Можно было бы все это поудалять и выложить, но могу же что-то упустить… Да и поддерживать надо будет сборку — вышло критическое обновление, обнови у себя в Dropbox сборку, на гитхабе сборку и не забудь для гитхаба опять поудалять все лишнее.
      1. Роман 03 марта 2014, 09:54 # 0
        Не спорю, сложности есть, но этот проект мог бы стать популярным, на мой взгляд.
    2. Владимир 04 марта 2014, 13:51 # 0
      Доброго дня!
      Спасибо, интересные статьи на вашем сайте.
      Сборки, для разных нужд, постоянно актуальны. К сожалению, Vapor, будучи весьма удобным скриптом, не работает на многих shared-хостингах (например, Таймвеб рубит процессы длящиеся более 10 сек.).
      Если у вас будет время, расскажите, какие сегодня есть самые технологичные способы делать сборки и, отдельно, сборки шаблонов со встроенными ресурсами (PackMan же не добавляет ресурсы в пакет). Иметь коллекцию из подготовленных шаблонов весьма полезно, особенно оформленных в транспортные пакеты.
      С нетерпением жду развитие данной темы.
      Спасибо.
      1. Илья Уткин 04 марта 2014, 13:54 # 0
        Я последнее время храню сборку в виде сайта.

        То есть установил MODX, создал нужные ресурсы, поставил и настроил нужные пакеты, а потом сделал дамп базы данных и файлов. На новый сайт я заливаю не MODX, а сам сайт, правлю пути в конфигах — и готово, осталось верстку перенести в шаблоны.
      2. Владимир 04 марта 2014, 14:02 # 0
        Я то же делаю почти так, только сначала ставлю чистый MODx, потом поверх распаковываю сборку без конфига, кэша и т.п., а затем перезаливаю базу.
        Но вот шаблоны бы вместе с ресурсами в транспортный пакет хотелось как то быстро оформлять. Интересно кто и как это делает. Конечно, совсем универсальным такой пакет с шаблоном не будет, но экономия времени точно возникнет. Вот, уже коммерческие шаблоны, оформленные в транспортные пакеты, появились themeforest.net/category/cms-themes/modx-themes
        Актуальная тема, тренд, как модно сейчас говорить))
        1. Ruslan Jn 06 марта 2014, 21:12 # 0
          Интересная статья. Может как-нибудь пригодится.
          1. Антон 11 июня 2014, 19:14 # 0
            Я такой шаблон купил. А теперь сижу и думаю, как его поставить? Никто не знает?
            1. Илья Уткин 17 июня 2014, 11:49 # 0
              Я думаю, надо спрашивать там, где вы купили, так как способов установки может быть множество, и им лучше знать))
              1. Сергей 30 августа 2014, 11:29 # 0
                Так а в чем вопрос поставить шаблон ваш? в комплекте идет справочный файл — в html формате, все четко прописано и разъяснено.
                Устанавливаем чистую модикс, смотрим по справке какие нужны дополнения, устанавливаем дополнения все из репозитория находясь в админке стандартным способом, в последнюю очередь ставим этот шаблон/дизайн также как и дополнение, предварительно просто закинуть нужно архив этот в папку core/packages, после этого при установке дополнения этого указать место репозитория локально и как система его обнаружит стандартно: скачать, а затем установить.
                после этого обновляем страницу бэкенда, в меню появиться пункт отдельный касаемый настроек именно уже шаблона и настройки эти будут отображаться в бэкенде в удобной форме с подписанными полями и вкладками по теме самого шаблона.

                Если по теме то вариантов переноса сайта с локального формата на хостинг несколько, можно любые использовать, как говорится кому что нравится.
                1. Антон 31 августа 2014, 18:40 # 0
                  Проблема оказалось в том, что название архива должно содержать фразу .transport.zip, как оказалось без этого, он эту сборку не съедает и не видит.
              2. Deni 18 июля 2014, 21:13 # 0
                Не пойму в чем секрет может в «версии», вашу протестировал все как положено, собрал свою наверное что то пропускаю… Так как пакеты не установленные, просто как локальные лежат ну и в общем где-то что то еще не вышло ( Может знаете что такое?
                1. Илья Уткин 19 июля 2014, 12:58 # 0
                  Давно я уже не делал сборок по этой инструкции… Сейчас я просто делаю дамп файлов и базы, а при создании нового сайта просто меняю пути в файлах конфигурации и параметры подключения к базе.
                2. Alexander V 14 ноября 2014, 02:50 # +1
                  К сожалению на 2.3.2 не работает способ. Беда-печаль, а идея хорошая, ещё бы порешать с префиксом таблиц.
                  1. Сергей 05 февраля 2015, 09:24 # 0
                    Вот решение с префиксами
                  2. Alexander V 27 января 2015, 06:52 # 0
                    Смысл такой, что таблицы надо удалять перед заливкой дампа. Пример на bash. На php написал скриптик, отдельно работает, но к инсталятору прицепить не получается, не получаю значение переменной, как в вашем примере и беру напрямую из конфига. Если есть какие мысли, просьба помочь ибо в программировании полный ламер)
                    <?php
                    require "../core/config/config.inc.php";
                    $connect = mysql_connect("$database_server", "$database_user", "$database_password") or die("Error connect MySQL!");
                    mysql_select_db($dbase, $connect);
                    $sql = "DROP TABLE $table_prefix"."access_actiondom,$table_prefix"."access_actions,$table_prefix"."access_category,$table_prefix"."access_context,$table_prefix"."access_elements,$table_prefix"."access_media_source,$table_prefix"."access_menus,$table_prefix"."access_permissions,$table_prefix"."access_policies,$table_prefix"."access_policy_template_groups,$table_prefix"."access_policy_templates,$table_prefix"."access_resource_groups,$table_prefix"."access_resources,$table_prefix"."access_templatevars,$table_prefix"."actiondom,$table_prefix"."actions,$table_prefix"."actions_fields,$table_prefix"."active_users,$table_prefix"."categories,$table_prefix"."categories_closure,$table_prefix"."class_map,$table_prefix"."content_type,$table_prefix"."context,$table_prefix"."context_resource,$table_prefix"."context_setting,$table_prefix"."dashboard,$table_prefix"."dashboard_widget,$table_prefix"."dashboard_widget_placement,$table_prefix"."document_groups,$table_prefix"."documentgroup_names,$table_prefix"."element_property_sets,$table_prefix"."extension_packages,$table_prefix"."fc_profiles,$table_prefix"."fc_profiles_usergroups,$table_prefix"."fc_sets,$table_prefix"."lexicon_entries,$table_prefix"."manager_log,$table_prefix"."media_sources,$table_prefix"."media_sources_contexts,$table_prefix"."media_sources_elements,$table_prefix"."member_groups,$table_prefix"."membergroup_names,$table_prefix"."menus,$table_prefix"."namespaces,$table_prefix"."property_set,$table_prefix"."register_messages,$table_prefix"."register_queues,$table_prefix"."register_topics,$table_prefix"."session,$table_prefix"."site_content,$table_prefix"."site_htmlsnippets,$table_prefix"."site_plugin_events,$table_prefix"."site_plugins,$table_prefix"."site_snippets,$table_prefix"."site_templates,$table_prefix"."site_tmplvar_access,$table_prefix"."site_tmplvar_contentvalues,$table_prefix"."site_tmplvar_templates,$table_prefix"."site_tmplvars,$table_prefix"."system_eventnames,$table_prefix"."system_settings,$table_prefix"."transport_packages,$table_prefix"."transport_providers,$table_prefix"."user_group_roles,$table_prefix"."user_group_settings,$table_prefix"."user_messages,$table_prefix"."user_settings,$table_prefix"."workspaces";
                    $result = mysql_query($sql, $connect);
                    if (false === $result)
                    die ('Error database SQL query
                    ');
                    $command="mysql -u$database_user -p$database_password --default-character-set=utf8 $dbase < dump.sql";
                    $importdb = shell_exec($command);
                    mysql_close($connect);
                    ?>
                    1. sc84275l 25 июля 2015, 22:05 # 0
                      Здравствуйте.
                      Не решили как на последних версиях сделать сборку? Может есть какое то решение?
                      1. Sanes 26 июля 2015, 06:39 # 0
                        Есть масса других способов
                        1. sc84275l 26 июля 2015, 07:13 # 0
                          Подскажите каких?

                        Авторизация

                        через сервис Loginza:


                        Шаблоны MODX

                        1 2 Дальше »

                        Объектная
                        модель
                        MODX