Финансовая поддержка VPS, бесплатные дополнения и docs Донаты оплачивают сервер и двигают бесплатные дополнения MODX и документацию. Поддержать

Всего 126 147 комментариев

Андрей Ятин
Андрей Ятин
Методом тыка определил, что не работает msProducts в ajax не работает, когда пользователь авторизован.

<?php
if (!defined('MODX_API_MODE')) {
    define('MODX_API_MODE', false);
}
require_once '/home/moohii/moohii.com/modx/config.core.php';
require_once MODX_CORE_PATH.'config/'.MODX_CONFIG_KEY.'.inc.php';
require_once MODX_CORE_PATH.'model/modx/filters/modoutputfilter.class.php';
require_once MODX_CORE_PATH.'model/modx/modx.class.php';

$modx = new modX();
$modx->initialize('web');
$modx->getService('error','error.modError', '', '');
$modx->getRequest();
$modx->getParser();

header('Content-Type: application/json');

$color = $_POST['color'];
$parent = $_POST['parent'];
$curl = $_POST['curl'];

$url = $modx->runSnippet('makeConfigUrl',array(
    "curl" => urldecode($curl)
    ,"color" => $color
    ,"part" => "frame"
));

$output = $modx->runSnippet('msProducts',array(  
   'parents' => $parent
   ,'tpl' => 'frameElecrRuCHNK'
   ,'includeThumbs' => '80x80'
   ,'sortby' => 'Data.price'
   ,'where' => '{"Data.external_signs":"'.$color.'","Data.product_type":"Рамки"}'
   ,'includeContent' => 1
   ,'limit' =>0
));

echo json_encode(array('url' => $url, 'block' => '#frame-list-content', 'output' => $output));

?>
Василий Наумкин
Василий Наумкин
Починил.

Это баг в MODX: получается при вызове 2х и более плагинов на событие onSiteSettingsRender.
Результаты их работы отделяются через перенос строки, что ломает javascript в коде страницы.

Вот исходник SystemSettingsManagerController
public function process(array $scriptProperties = array()) {
        $onSiteSettingsRender = $this->modx->invokeEvent('OnSiteSettingsRender');
        if (is_array($onSiteSettingsRender)) {
            $this->onSiteSettingsRender = implode("\n",$onSiteSettingsRender);
        }
}