0.00
83 читателя, 73 топика

Ajax и getResourceField

Установка расширения getResourceField, через систему управления пакетами.

Создание сниппета ajax

// Откликаться будет ТОЛЬКО на ajax запросы
if ($_SERVER['HTTP_X_REQUESTED_WITH'] != 'XMLHttpRequest') {return;}

// сниппет будет обрабатывать не один вид запросов, поэтому работать будем по запрашиваемому действию
$action = $_POST['action'];

// Если в массиве POST нет действия - выход
if (empty($action)) {return;}

// А если есть - работаем
$res = '';
switch ($action) {
    // Создаём метод
    case 'field': 
        // Даём возможность задавать важные для запуска сниппета параметры,
        // в ajax запросе
        $params = array();
        $params['id'] = $_POST['id'];
        $params['field'] = $_POST['field'];
        $res = $modx->runSnippet('getResourceField', $params); break;
    // А вот сюда потом добавлять новые методы
}

// Если у нас есть, что отдать на запрос - отдаем и прерываем работу парсера MODX
if (!empty($res)) {
    die($res);
}

Читать дальше →

[EVO] По умолчанию, возвращаться после сохранения / Always Stay

Разработчики решили, что в основном редактирование документов, чанков, сниппетов, плагинов и шаблонов занимает короткое время и действием по умолчанию, после их сохранения, определили выходом из режима редактирования. Изменить это не так легко, как хотелось бы.

Происходит это посредством использования плагина.

Создание плагина

Название, например: Always Stay
Описание, к примеру: Для автоматического выставления нужной позиции в списке режимов сохранения внутренних ресурсов системы
Содержимое:
$e = & $modx->Event;
if ($e->name == "OnDocFormRender" ||
    $e->name == "OnTempFormRender" ||
    $e->name == "OnChunkFormRender" ||
    $e->name == "OnSnipFormRender" ||
    $e->name == "OnPluginFormRender"
   ) {
      $html = "
          <script type='text/javascript'>
            if(!$('stay').value) $('stay').value=2;
          </script>
      ";
      $e->output($html);
}
Активизация во- время наступления событий:
  • OnDocFormRender
  • OnTempFormRender
  • OnChunkFormRender
  • OnSnipFormRender
  • OnPluginFormRender

Эта статья была составлена специально для пункта страницы.

Идея создания плагина и его код принадлежат bezumkin

[REVO] Выносим админку на субдомен

Если честно, я пока не нашел практического применения этой фишке. Как вариант — таким образом можно решить конфликт ISPManager. В документации описано как можно перенести папку manager. Также там сказано, что имеется возможность вынести админку на субдомен, однако описания этого процесса нет. Я решил восполнить этот пробел.

Для начала условимся что файл конфирурации в папке core трогать не будем, также не будем вобще трогать начальные папки manager и connectors — это для подстраховки.

И так, допустим у нас такая структура папок:

/home/
     /core/
     /manager/
             /connectors/
             /config.core.php
             /index.php
     /www/
         /assets/
         /config.core.php
         /index.php


У нас есть сайт site.ru, мы хотим админку на manager.site.ru (или mgr.site.ru или secretroom.site.ru и т.д)

Для начала отключим compress_js и compress_css
Затем правим файл /home/manager/config.core.php:

<?php
define('MODX_CONFIG_KEY', 'config');
define('MODX_CORE_PATH', dirname(dirname(__FILE__)) . '/core/');
define('MODX_CONNECTORS_PATH', dirname(__FILE__) . '/connectors/');
define('MODX_CONNECTORS_URL', '/connectors/');
define('MODX_MANAGER_PATH', str_replace('\\', '/', dirname(__FILE__)) . '/');
define('MODX_MANAGER_URL', '/');
define('MODX_SITE_URL', 'http://site.ru/');
define('MODX_ASSETS_PATH', dirname(dirname(__FILE__)) . '/www/assets/');
define('MODX_ASSETS_URL', MODX_SITE_URL . 'assets/');
?>


Желательно указать абсолютные пути к папкам. В качестве MODX_SITE_URL указываем url своего сайта.

Далее правим файл /home/manager/connecors/config.core.php:
<?php
define('MODX_CONFIG_KEY', 'config');
define('MODX_CORE_PATH', dirname(dirname(dirname(__FILE__))) . '/core/');
define('MODX_MANAGER_PATH', dirname(dirname(__FILE__)) . '/');
define('MODX_MANAGER_URL', '/');
?>


Теперь админка должна заработать по адресу manager.site.ru. Старая админка конечно же тоже будет работать.

Теперь о плохом. Компоненты, имеющие свои панели, работать не будут. Проблема в том, что js-файлы и коннекторы компонентов обычно неверно располагают в /assets/components/, что конечно же неправильно. Ибо что js-файлы, что коннекторы должны располагаться в том контексте, в котором предполагается их использовать. Тоесть js-файлы должны быть в {manager_path}assets/components/ а коннекторы в {connectors_path}components.

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

Заплати лайком

Сразу скажу, что я не любитель этой фигни. Но мой основной заказчик крутится в сфере инфобизнеса. А там свои законы, правила и понимание интернета. В общем пришлось мне для него на скорую руку накидать социальный замок. Подробнее описано тут. Валяется значит это у меня в копилке и ждет своего следующего заказчика…

Читать дальше →

[EVO] Исправляем ошибку валидации расширения файла в менеджере файлов

Заметил багу в MODX ветки Evolution
Нет возможности загрузить файлы с расширением написаном в другом регистре. Например, файлы *.JPG, *.JPg и т.п. мы не сможем загрузить, если в настройках прописано .jpg.

Читать дальше →

Видео youtube и vimeo в контексте | MODX Revolution и Evolution

modx youtube and vimeo

Сделал небольшой сниппет, так как очередной заказчик ленивый и ему тяжело нажимать и искать кнопочки или вставлять какой-то код.
Одним словом, цель была с простых сылок в ресурсе формировать вставку видео с youtube и vimeo.
Я уже делал вывод видео на сайт. но с помощью галлереи
Читать дальше →