Расширение для MODx Revolution, которое позволяет существенно увеличить скорость разработки на MODX Revolution.
С gitmodx вы сможете создавать сниппеты, чанки, плагины, настройки системы и контекста прямо из среды разработки!
Файловые чанки, сниппеты, плагины, системные настройки и настройки контекста не сохраняются в базу данных, что существенно упрощает версионный контроль. Вам не понадобится после внесения изменений создавать патчи или миграции базы данных!
Сперва склонируйте репозиторий в папку core/components/ Путь к папке будет выглядеть примерно так:
/Users/YourUser/websites/YourSite/core/components/gitmodx/
parser_class_path = {core_path}components/gitmodx/model/gitmodx/
parser_class = gitModParser
Да, я понимаю, что перезапись файлов ядра - плохое решение. Но, к сожалению, другого решения я не нашел. И тем не менее эти изменения минимальны.
Просто запустите скрипт cliscripts/changeindex.php
- он сделает замены в трех файлах:
MODX_BASE_PATH.'index.php'
MODX_MANAGER_PATH.'index.php'
MODX_CONNECTORS_PATH.'index.php'
Теперь вы можете создавать чанки, плагины, сниппеты прямо в файловой системе.
ВАЖНО!!! Чанки, плагины и сниппеты, созданные в файловой системе с применением gitmodx не сохраняются в базе данных,
но они работают, если вы их вызываете стандартным способом через теги modx
(например [[$chunkName]]
или [[$snippetName]]
) или если вы вызываете их через API (например $modx->getChunk('chunkName')
или $modx->runSnippet('snippetName')
или $modx->getObject('modChunk',array('name'=>'chunkName'))
)
Идем в папку core/components/gitmodx/elements/snippets/
Вы можете создавать сниппеты как в этой папке, так и создавая подкаталоги для организации сниппетов по их назначению.
Например:
-core/components/snippets/
--utils
--usersnippets
--productsnippets
Создайте новый файл yourSnippetName.php (регистрозависимый):
<?php
//Do something
return 'someValue';
После этого вы можете его вызывать (например, в шаблоне):
[[yourSnippetName]]
Процесс создания чанков полностью аналогичен, но в каталоге core/components/chunks/
Файлы чанков должны иметь расширение .tpl
Идем в каталог core/components/gitmodx/elements/plugins/
Сперва создайте php-файл с кодом вашего плагина. Например myPlugin.php
Затем укажите, на какие события данный плагин должен реагировать:
Идем в файл plugins.inc.php и добавляем события.
Пример:
<?php
return array(
'OnHandleRequest' => array(
'myPlugin'
),
'OnLoadWebDocument' => array(
'myPlugin
)
);
Если у вас есть список системных настроек, которые вы часто меняете, вы можете их продублировать в gitmodx-config файл (core/components/gitmodx/config/config.inc.php).
Вы должны помнить, что настройки, сохраненные в config-файле, переопределяют настройки, сохраненные в базе данных.
Вы также можете группировать настройки, разделив по различным файлам с расширением .inc.php
Например:
core/components/gitmodx/config/config.inc.php
core/components/gitmodx/config/mycomponent.inc.php
core/components/gitmodx/config/minishop2.inc.php
Откройте core/components/gitmodx/config/config.inc.php
Создайте несколько настроек:
<?
$gitModxConfig = array(
'mySetting' => 'someValue',
'myAnotherSetting' => 'someAnotherValue`,
//Вы можете переопределить стандартную системную настройку site_status
'site_status' => 0,
//Если в базе данных настройка site_status = 1, реальным значением будет 0!
);
return $gitModxConfig;
После этого вы можете использовать эти настройки, как и всегда:
$modx->getOption('mySetting');
или в шаблоне/чанке:
[[++mySetting]]
Для создания настроек контекста вам необходимо повторить те же действия, что и с системными настройками. Но это нужно делать в файле:
core/components/gitmodx/config/[context_key]/config.inc.php
Вы также можете группировать настройки, разделив по различным файлам с расширением .inc.php
Например:
core/components/gitmodx/config/web/config.inc.php
core/components/gitmodx/config/web/mycomponent.inc.php
core/components/gitmodx/config/web/minishop2.inc.php
В отличие от системных настроек, вы должны помнить, что настройки контекста, записанные в config-файле будут переопределены настройками, сохраненными в базе данных
Таким образом, если в файле core/components/gitmodx/config/web/config.inc.php
настройка site_status = 0
, а в админке, в интерфейсе настроек
контекста web вы определите настройку site_status = 1
реальным значением будет 1