Всем доброго времени суток! Возник вопрос, не получается найти решение. Прошу помощи. Ситуация такая: У каждого ресурса есть MIGX TV в котором есть несколько строк данных. Эти строки выводятся с помощью сниппета getImageList внутри сниппета pdoResource, который перебирает нужные ресурсы. Все строки вместе выводятся корректно. Но вот дальше тупик. Задача сделать постраничное разбиение вывода строк. pdoPage для pdoResource делает разбиение, но limit берется по количеству ресурсов, а так как в каждом ресурсе несколько строк из MIGX TV, то выводится гораздо больше строк чем указано в limit. Посоветуйте как в данном случае реализовать постраничное разбиение?

Есть скрипт: <?php print '<pre>'; ini_set('display_errors', 1); $modx->switchContext('web'); $modx->setLogLevel(3); $modx->setLogTarget('HTML');

$namespace = 'modimporter'; // Неймспейс комопонента

// Добавить веб-сессию текущего пользователя // Если вы не авторизованы во фронте, можете получить // в результате выполнения сообщение Доступ запрещён! // $modx->user->addSessionContext('web');

// Удалить веб-сессию текущего пользователя // $modx->user->removeSessionContext('web');

// Сбросить сессию компонента // $_SESSION["SM_1C_IMPORT"] = array();

// Вывести данные сессии компонента // print_r($_SESSION["SM_1C_IMPORT"]);

// print_r($_SESSION["SM_1C_IMPORT"]); // unset($_SESSION["modImporter"]);

$params = array(
// "step" => "SDFsdf", // "debug" => false, // "mode" => "checkauth", // "modimporter_step" => "modimporter_checkauth", // "modimporter_step" => "modimporter_console_init", // "modimporter_step" => "modimporter_drop_tmp_tables", // "modimporter_step" => "modimporter_create_tmp_tables", // "modimporter_step" => "modimporter_write_tmp_xlsx_shared_strings", // "modimporter_step" => "modimporter_write_tmp_categories", "modimporter_step" => "modimporter_write_tmp_data", // "modimporter_step" => "modimporter_import_data", // "modimporter_step" => "modimporter_import_update_categories", // "modimporter_step" => "modimporter_import_update_categories", // "modimporter_step" => "modimporter_import_create_categories", // "modimporter_step" => "modimporter_import_update_goods", // "modimporter_step" => "modimporter_import_create_goods", // "modimporter_step" => "modimporter_import_flush_prices", // "modimporter_step" => "modimporter_import_create_prices",

// "filename"  => "import.xml",
// "username"  => "admin", 
// "password"  => "wefwef", 
"outputCharset" => "utf-8",

);

// $_SERVER['PHP_AUTH_USER'] = 'admin'; // $_SERVER['PHP_AUTH_PW'] = 'admin';

if(!$response = $modx->runProcessor('modimporter/import/console', $params , array( 'processors_path' => $modx->getObject('modNamespace', $namespace)->getCorePath().'processors/', ))){ print "Не удалось выполнить процессор"; return; }

$memory = round(memory_get_usage(true)/1024/1024, 4).' Mb'; print "<div>Memory: {$memory}</div>"; $totalTime= (microtime(true) - $modx->startTime); $queryTime= $modx->queryTime; $queryTime= sprintf("%2.4f s", $queryTime); $queries= isset ($modx->executedQueries) ? $modx->executedQueries : 0; $totalTime= sprintf("%2.4f s", $totalTime); $phpTime= $totalTime - $queryTime; $phpTime= sprintf("%2.4f s", $phpTime); print "<div>TotalTime: {$totalTime}</div>";

print_r($response->getResponse());

// $objects = $response->getObject(); // foreach($objects as $object){ // }

Спасибо! А подскажите… глупый, наверное, вопрос… как правильно вызвать модуль импорта из консоли? Были мысли ее как-то использовать, но я не знаю, как верно вызвать нужный модуль.

У Вас, вероятно, 2.5.х версия? Там действительно есть небольшая проблема с совместимостью. Я передам разработчику пакета, чтобы он актуализировал его под новый MODX

Зачастую импорт приходится доделывать, поскольку у разных клиентов форматы файлов могут отличаться. В принципе, то, что Вы показали, верно и должно прописаться. Только я бы немного поправил: $prices = current((array)$raw_data['Цены']); $amount = current($raw_data['Количество']); $data = array( "price"=>!empty($prices['ЦенаЗаЕдиницу']) ? $prices['ЦенаЗаЕдиницу'] : 0, "amount" => !empty($amount) ? $amount : 0 ); При отладке очень помогает скрипт запуска импорта из консоли. Доходите до нужного шага, и в функции, которая его обрабатывает, в месте, где получаете данные, прописываете что-то типа print_r($data); exit; Это поможет увидеть, какие данные Вы получаете из xml. Также вывод можно сделать после записи в объект или после вызова процессора.

Доброго времени! Сразу скажу, в php не силен. Возникла трудность с задачей, прощу направить. Модуль, как я понял, позволяет импортировать в базу сайта информацию выгруженную из 1с. В выгруженном файле есть остатки — «Количество». Находятся на уровне с ценами. Для примера: <Предложение> <Ид>ab43f47d-b47a-11e6-9504-406186caa5f1<Ид/> <Артикул/> <Наименование>Кондитерское изделие фигурное Дед Мороз 60г<Наименование/> <БазоваяЕдиница Код="796" НаименованиеПолное="Штука" МеждународноеСокращение="PCE"> <Пересчет> <Единица>796<Единица/> <Коэффициент>1<Коэффициент/> <Пересчет/> <БазоваяЕдиница/> <Цены> <Цена> <Представление> 57 RUB за шт<Представление/> <ИдТипаЦены>70f63c69-5c82-11e6-8eb6-406186caa5f1<ИдТипаЦены/> <ЦенаЗаЕдиницу>57<ЦенаЗаЕдиницу/> <Валюта>RUB<Валюта/> <Коэффициент>1<Коэффициент/> <Цена/> <Цены/> <strong><Количество>27<Количество/></strong> <Склад ИдСклада="456684b4-0cd2-4157-a228-4ed059397969" КоличествоНаСкладе="27"/> <Предложение/> В процессоре модуля есть метод StepImportCreatePrices() в классе console.class.php Так вот изначально метод, видимо, добавляет только цены, хотя, перед методом есть коментарий "// Создаем цены и остатки" Во всяком случае кусок метода выглядит вот так: $prices = current((array)$raw_data['Цены']); //['Цена'] $data = array( "price" => !empty($prices['ЦенаЗаЕдиницу']) ? $prices['ЦенаЗаЕдиницу'] : 0, ); попробовал аналогично сделать с остатками: $prices = current((array)$raw_data['Цены']); //['Цена'] $amount = current($raw_data['Количество']); $data = array( "price" => !empty($prices['ЦенаЗаЕдиницу']) ? $prices['ЦенаЗаЕдиницу'] : 0, "amount" => !empty($raw_data['Количество']) ? $raw_data['Количество'] : 0 ); Но это не сработало. Причем в процессе экспериментов возникло ощущение, что, возможно, в запросе с апдейтом строки amount совсем отсутствует (формирование самого запроса найти не смог пока). Подскажите, пожалуйста, куда стоит копать, может я вообще не в том месте ищу, остатки не берутся из файла совсем или не ту переменную использовать пытаюсь? Никак не удается самому разобраться в работе модуля.

Прошу помощи поставила xlexicon и при его инициализации выходит HTTP ERROR 500 В отчете тока варнинги. Как исправить? [2017-01-21 16:42:42] (ERROR @ ..../core/model/modx/modmanagercontroller.class.php: 929) PHP warning: require_once(.../core/components/xlexicon/controllers/index.class.php): failed to open stream: No such file or directory

Вот спасибо тебе, добрый человек! Просто и доходчиво, а главное - работает)