2025-08-15 14:55:02 - Host: - LOW_PRIORITY_ERROR - [ErrorException] E_WARNING
Undefined array key "ADDITIONAL_OPTIONS" (0)
/home/bitrix/ext_www/gobi.ru/bitrix/modules/aspro.max/classes/general/CMax.php:652
#0: CMax::GetBackParametrsValues
/home/bitrix/ext_www/gobi.ru/bitrix/modules/aspro.max/classes/general/CMax.php:825
#1: CMax::GetFrontParametrsValues
/home/bitrix/ext_www/gobi.ru/bitrix/modules/aspro.max/classes/general/CMax.php:841
#2: CMax::GetFrontParametrValue
/home/bitrix/ext_www/gobi.ru/bitrix/modules/aspro.max/classes/general/CMaxRegionality.php:23
#3: CMaxRegionality::checkUseRegionality
/home/bitrix/ext_www/gobi.ru/bitrix/modules/aspro.max/classes/general/CMaxRegionality.php:95
#4: CMaxRegionality::getRegions
/home/bitrix/ext_www/gobi.ru/bitrix/modules/aspro.max/classes/general/CMaxRegionality.php:327
#5: CMaxRegionality::getCurrentRegion
/home/bitrix/ext_www/gobi.ru/bitrix/modules/aspro.max/classes/general/CMaxEvents.php:1741
#6: CMaxEvents::OnPageStartHandler
/home/bitrix/ext_www/gobi.ru/bitrix/modules/main/tools.php:5267
#7: ExecuteModuleEventEx
/home/bitrix/ext_www/gobi.ru/bitrix/modules/main/include.php:187
#8: require_once(string)
/home/bitrix/ext_www/gobi.ru/bitrix/modules/main/include/prolog_before.php:19
#9: require(string)
/home/bitrix/ext_www/gobi.ru/bitrix/modules/main/tools/cron_events.php:11
----------
<?if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();?>
<?$this->setFrameMode(true);?>
<?global $arTheme, $APPLICATION, $arSectionFilter, $arrFilterNew;?>
<?$APPLICATION->AddViewContent('right_block_class', 'catalog_page ');?>
<?$arSectionFilter = array('IBLOCK_ID' => $arParams['IBLOCK_ID']);
CMax::makeSectionFilterInRegion($arSectionFilter);?>
<?// region filter for to count elements
if(
$GLOBALS['arRegion'] &&
$GLOBALS['arTheme']['USE_REGIONALITY']['VALUE'] === 'Y' &&
$GLOBALS['arTheme']['USE_REGIONALITY']['DEPENDENT_PARAMS']['REGIONALITY_FILTER_ITEM']['VALUE'] === 'Y'
){
$arSectionFilter['PROPERTY_LINK_REGION'] = $GLOBALS['arRegion']['ID'];
}?>
<?$sViewElementTemplate = ($arParams["SECTIONS_TYPE_VIEW"] == "FROM_MODULE" ? $arTheme["CATALOG_PAGE_SECTIONS"]["VALUE"] : $arParams["SECTIONS_TYPE_VIEW"]);?>
<?$bShowLeftBlock = ($arTheme["LEFT_BLOCK_CATALOG_ROOT"]["VALUE"] == "Y" && !defined("ERROR_404") && !($arTheme['HEADER_TYPE']['VALUE'] == 28 || $arTheme['HEADER_TYPE']['VALUE'] == 29));?>
<?$APPLICATION->SetPageProperty("HIDE_LEFT_BLOCK", ( $bShowLeftBlock ? 'N' : 'Y' ) );?>
<?
// --- AJAX обработка для второго каталога ---
if ($_SERVER['REQUEST_METHOD'] === 'POST' && $_POST['ajax'] === 'Y' && $_POST['catalog'] === 'second') {
$arrFilterNew = [
'CATALOG_AVAILABLE' => 'Y'
];
$page = intval($_POST['page']);
if ($page < 1) $page = 1;
$pageSize = 20;
$APPLICATION->IncludeComponent(
"bitrix:catalog.section",
"catalog_block",
array(
"IBLOCK_TYPE" => "1c_catalog",
"IBLOCK_ID" => "163",
"FILTER_NAME" => "arrFilterNew",
"INCLUDE_SUBSECTIONS" => "Y",
"SHOW_ALL_WO_SECTION" => "Y",
"ELEMENT_SORT_FIELD" => "rand",
"ELEMENT_SORT_ORDER" => "asc",
"PAGE_ELEMENT_COUNT" => $pageSize,
"LINE_ELEMENT_COUNT" => "5",
"CACHE_TYPE" => "N",
"CACHE_TIME" => "0",
"DISPLAY_TOP_PAGER" => "N",
"DISPLAY_BOTTOM_PAGER" => "N",
"HIDE_NOT_AVAILABLE" => "Y",
"HIDE_NOT_AVAILABLE_OFFERS" => "Y",
"PAGER_SHOW_ALL" => "N",
"PAGER_DESC_NUMBERING" => "N",
"PAGER_SHOW_ALWAYS" => "N",
"PAGER_TEMPLATE" => "",
"PAGER_PAGE" => $page,
"PRICE_CODE" => array("BASE", "Основная цена продажи МСК", "Основная цена продажи"), // добавь сюда, если нужно
"SHOW_PRICE_COUNT" => 1,
"PRICE_VAT_INCLUDE" => "Y",
),
false
);
die();
}
?>
<style>
#loadMoreSecondCatalog {
width: 100%;
font-size: 0.733em;
line-height: 1.3em;
text-transform: uppercase;
letter-spacing: 0.8px;
text-align: center;
margin: 0 0 30px;
border: 1px solid var(--stroke_black);
cursor: pointer;
position: relative;
z-index: 2;
transition: background-color 0.2s ease, color 0.2s ease;
background-color: transparent;
color: inherit; /* чтобы текст наследовал цвет */
padding: 10px 0;
display: inline-block;
}
#loadMoreSecondCatalog:hover {
background-color: #000;
color: #fff;
}
</style>
<div class="main-catalog-wrapper">
<div class="section-content-wrapper <?=($bShowLeftBlock ? 'with-leftblock' : '');?>">
<?@include_once('page_blocks/'.$sViewElementTemplate.'.php');?> <!-- Главный каталог -->
<?CMax::get_banners_position('CONTENT_BOTTOM');
global $bannerContentBottom;
$bannerContentBottom = true;
?>
<?if(preg_match('#^/catalog/?$#', $APPLICATION->GetCurDir())):?>
<div class="div" style="margin-top: 50px;" id="second_catalog_block">
<div id="second_catalog_items">
<?// Начальная подгрузка товаров второго каталога ?>
<?
$arrFilterNew = ['CATALOG_AVAILABLE' => 'Y'];
$APPLICATION->IncludeComponent(
"bitrix:catalog.section",
"catalog_block",
array(
"IBLOCK_TYPE" => "1c_catalog",
"IBLOCK_ID" => "163",
"FILTER_NAME" => "arrFilterNew",
"INCLUDE_SUBSECTIONS" => "Y",
"SHOW_ALL_WO_SECTION" => "Y",
"ELEMENT_SORT_FIELD" => "rand",
"ELEMENT_SORT_ORDER" => "asc",
"PAGE_ELEMENT_COUNT" => 20,
"LINE_ELEMENT_COUNT" => 5,
"CACHE_TYPE" => "N",
"CACHE_TIME" => "0",
"DISPLAY_TOP_PAGER" => "N",
"DISPLAY_BOTTOM_PAGER" => "N",
"HIDE_NOT_AVAILABLE" => "Y",
"HIDE_NOT_AVAILABLE_OFFERS" => "Y",
"SHOW_OLD_PRICE" => "Y", // Добавлено
"SHOW_DISCOUNT_PERCENT" => "Y", // Добавлено
"PRICE_CODE" => array(
"BASE",
"Основная цена продажи МСК",
"Основная цена продажи"
),
"SHOW_PRICE_COUNT" => "1",
"PRICE_VAT_INCLUDE" => "Y",
),
false
);
?>
</div>
<div class="bottom_nav animate-load-state block-type" data-parent=".tabs_slider" data-append=".items" style="text-align:center; margin-top: 20px;">
<div id="load_more_second_catalog" class="ajax_load_btn rounded3 colored_theme_hover_bg">
<span class="more_text_ajax font_upper_md">Показать ещё</span>
</div>
</div>
</div>
<?endif;?>
</div>
<?if($bShowLeftBlock):?>
<?CMax::ShowPageType('left_block');?>
<?endif;?>
</div>
<script>
(function(){
const btn = document.getElementById('load_more_second_catalog');
const container = document.getElementById('second_catalog_items');
let page = 2; // страница 1 уже загружена
btn.addEventListener('click', function(){
btn.disabled = true;
btn.querySelector('.more_text_ajax').innerText = 'Загрузка...';
BX.ajax({
url: window.location.pathname,
method: 'POST',
data: {
ajax: 'Y',
catalog: 'second',
page: page
},
dataType: 'html',
onsuccess: function(data){
if(data.trim() !== ''){
container.insertAdjacentHTML('beforeend', data);
page++;
btn.disabled = false;
btn.querySelector('.more_text_ajax').innerText = 'Показать ещё';
} else {
btn.remove();
}
},
onfailure: function(){
btn.disabled = false;
btn.querySelector('.more_text_ajax').innerText = 'Показать ещё';
alert('Ошибка загрузки товаров');
}
});
});
})();
</script>
<?php
// Карта категорий MODX
$categoryIds = [
'Гибридная бесперебойная система' => 2813,
'Сетевые станции' => 2814,
'Автономия' => 2815,
'Бесперебойник' => 2816,
'Монокристалл' => 2818,
'Поликристалл' => 2819,
'Раскладные' => 2820,
'Гибкие' => 2821,
'MPPT' => 2823,
'PWM' => 2824,
'Инверторы с подмешиванием' => 2826,
'ИБП' => 2827,
'Гибридные' => 2828,
'Инверторы 220' => 2829,
'Сетевые инверторы' => 2830,
'Портативные зарядные станции' => 2831,
'Зарядные устройства' => 2832,
'LiFePO4' => 2834,
'GeI' => 2835,
'AGM' => 2836,
'CARBON' => 2837,
'Автоматы переменного тока' => 2839,
'Автоматы постоянного тока' => 2840,
'Предохранители и диоды' => 2841,
'Прочее защитное оборудование' => 2842,
'Тепловые насосы' => 2843,
'Кровельные конструкции' => 2845,
'Степлажи' => 2846,
'Регулируемые конструкции' => 2848,
'Аккумуляторы' => 2850,
'Солнечные батареи' => 2851,
'Контроллеры заряда' => 2852,
'Ветрогенераторы' => 2854,
'Комплектующие' => 2855,
'Провода' => 2856,
'Коннекторы и перемычки' => 2857,
'Распределительные щитки' => 2858,
'Балансиры' => 2859,
'Мониторинг' => 2860,
'Прочие комплектующие' => 2861,
'Прочее' => 2862,
];
// Путь для временной папки с изображениями
$tmpImagesDir = MODX_BASE_PATH . 'tmpimages/';
if (!is_dir($tmpImagesDir)) {
mkdir($tmpImagesDir, 0755, true);
}
// Получаем JSON-данные от API
$data = $modx->runSnippet('importProductsFromWP');
$products = json_decode($data, true);
if (!$products || !is_array($products)) {
return 'Нет товаров для импорта';
}
$count = 0;
foreach ($products as $item) {
$title = $item['title'] ?? 'Без названия';
$description = $item['description'] ?? '';
$price = $item['price'] ?? 0;
$article = $item['sku'] ?? '';
$categories = $item['categories'] ?? [];
if (!$article || empty($categories)) {
continue;
}
// Определяем parent по категориям
$parentId = 0;
foreach ($categories as $catName) {
if (isset($categoryIds[$catName])) {
$parentId = $categoryIds[$catName];
break;
}
}
if ($parentId === 0) {
continue;
}
// Ищем товар по артикулу в msProductData
$productData = $modx->getObject('msProductData', ['article' => $article]);
if (!$productData) {
// Новый товар
$product = $modx->newObject('msProduct');
$product->fromArray([
'pagetitle' => $title,
'alias' => $modx->sanitizeString($title),
'published' => 1,
'template' => 5,
'parent' => $parentId,
'class_key' => 'msProduct',
]);
$product->save();
// Создаём и заполняем msProductData
$productData = $modx->newObject('msProductData');
$productData->set('id', $product->get('id'));
$productData->set('article', $article);
} else {
// Обновление существующего товара
$product = $modx->getObject('msProduct', $productData->get('id'));
if (!$product) {
// Если товар не найден, создаём новый
$product = $modx->newObject('msProduct');
$product->fromArray([
'pagetitle' => $title,
'alias' => $modx->sanitizeString($title),
'published' => 1,
'template' => 5,
'parent' => $parentId,
'class_key' => 'msProduct',
]);
$product->save();
$productData->set('id', $product->get('id'));
}
}
// Обновляем общие поля продукта
$product->fromArray([
'pagetitle' => $title,
'parent' => $parentId,
]);
$product->save();
// Обновляем данные msProductData
$productData->set('price', $price);
$productData->save();
$productId = $product->get('id');
// Устанавливаем TV-поля
if (!empty($item['attributes'])) {
$attributes = $item['attributes'];
if (!empty($attributes['pa_power'][0])) {
$product->setTVValue('power', $attributes['pa_power'][0]);
}
if (!empty($attributes['pa_warranty'][0])) {
$product->setTVValue('guarantee', $attributes['pa_warranty'][0]);
}
}
// Обновляем msProductData с дополнительными атрибутами
if (!empty($item['attributes'])) {
$dataObject = $product->getOne('Data');
if ($dataObject) {
foreach ($item['attributes'] as $key => $value) {
$optionKey = strtolower(trim($key));
if (is_array($value)) {
$value = implode(', ', $value);
}
$dataObject->set($optionKey, $value);
}
$dataObject->save();
}
}
// Обработка изображений через процессор с временной папкой
if (!empty($item['images']) && is_array($item['images'])) {
foreach ($item['images'] as $imgUrl) {
$filename = basename(parse_url($imgUrl, PHP_URL_PATH));
$destination = $tmpImagesDir . $filename;
$imageContent = @file_get_contents($imgUrl);
if ($imageContent !== false) {
file_put_contents($destination, $imageContent);
$response = $modx->runProcessor('gallery/upload', [
'id' => $productId,
'name' => $filename,
'file' => $destination,
], [
'processors_path' => MODX_CORE_PATH . 'components/minishop2/processors/mgr/',
]);
if ($response->isError()) {
error_log("Ошибка загрузки изображения: " . print_r($response->getAllErrors(), true));
}
unlink($destination);
}
}
}
$count++;
}
return "Импорт завершен. Создано/обновлено товаров: {$count}";
/home/users/j/j84149400/domains/j84149400.myjino.ru/core/xpdo/om/xpdoobject.class.php : 240) Error 42S22 executing statement:
Array
(
[0] => 42S22
[1] => 1054
[2] => Unknown column 'msProduct.article' in 'WHERE'
)
{if $_modx->resource.headerMain == 'Шапка-1'}
{'header1'|chunk}
{elseif $_modx->resource.headerMain == 'Шапка-2'}
{'header2'|chunk}
{elseif $_modx->resource.headerMain == 'Шапка-3'}
{'header3'|chunk}
{elseif $_modx->resource.headerMain == 'Шапка-4'}
{'header4'|chunk}
{/if}