<?
use \Bitrix\Main\Loader;
use \Bitrix\Highloadblock as HL;
/**
* @var array Массив описывающий свойство типа справочник
*/
$arHighloadProperty = $arResult["PROPERTIES"]['SPORT_SPR'];
/**
* @var string название таблицы справочника
*/
$sTableName = $arHighloadProperty['USER_TYPE_SETTINGS']['TABLE_NAME'];
/**
* Работаем только при условии, что
* - модуль highloadblock подключен
* - в описании присутствует таблица
* - есть заполненные значения
*/
if ( Loader::IncludeModule('highloadblock') && !empty($sTableName) && !empty($arHighloadProperty["VALUE"]) )
{
/**
* @var array Описание Highload-блока
*/
$hlblock = HL\HighloadBlockTable::getRow([
'filter' => [
'=TABLE_NAME' => $sTableName
],
]);
if ( $hlblock )
{
/**
* Магия highload-блоков компилируем сущность, чтобы мы смогли с ней работать
*
*/
$entity = HL\HighloadBlockTable::compileEntity( $hlblock );
$entityClass = $entity->getDataClass();
$arRecords = $entityClass::getList([
'filter' => [
'UF_XML_ID' => $arHighloadProperty["VALUE"]
],
]);
foreach ($arRecords as $record)
{
/**
* Тут любые преобразования с записью, полученной из таблицы.
* Я транслировал почти все напрямую.
*
* Нужно помнить, что например в UF_FILE возвращается ID файла,
* а не полный массив описывающий файл
*/
$arRecord = [
'ID' => $record['ID'],
'UF_NAME' => $record['UF_NAME'],
'UF_SORT' => $record['UF_SORT'],
'UF_XML_ID' => $record['UF_XML_ID'],
'UF_LINK' => $record['UF_LINK'],
'UF_DESCRIPTION' => $record['UF_DESCRIPTION'],
'UF_FULL_DESCRIPTION' => $record['UF_FULL_DESCRIPTION'],
'UF_DEF' => $record['UF_DEF'],
'UF_FILE' => [],
'~UF_FILE' => $record['UF_FILE'],
];
/**
* Не очень быстрое решение - сколько записей в инфоблоке, столько файлов и получим
* Хорошо было бы вынести под код и там за 1 запрос все получить, а не плодить
* по дополнительному запросу на каждый файл
*/
if ( !empty($arRecord['~UF_FILE']) )
{
$arRecord['UF_FILE'] = \CFile::getById($arRecord['~UF_FILE'])->fetch();
}
$arResult["PROPERTIES"]['SPORT_SPR']['EXTRA_VALUE'][] = $arRecord;
}
}
}
// ----------------------- тут продоблировал весь код и подставил 2 к переменным)
// ------------------------------------------------------------------------------
/**
* @var array Массив описывающий свойство типа справочник
*/
$arHighloadProperty2 = $arResult["PROPERTIES"]['VID_SPR'];
/**
* @var string название таблицы справочника
*/
$sTableName2 = $arHighloadProperty2['USER_TYPE_SETTINGS']['TABLE_NAME'];
/**
* Работаем только при условии, что
* - модуль highloadblock подключен
* - в описании присутствует таблица
* - есть заполненные значения
*/
if ( Loader::IncludeModule('highloadblock') && !empty($sTableName2) && !empty($arHighloadProperty2["VALUE"]) )
{
/**
* @var array Описание Highload-блока
*/
$hlblock2 = HL\HighloadBlockTable::getRow([
'filter' => [
'=TABLE_NAME' => $sTableName2
],
]);
if ( $hlblock2 )
{
/**
* Магия highload-блоков компилируем сущность, чтобы мы смогли с ней работать
*
*/
$entity2 = HL\HighloadBlockTable::compileEntity( $hlblock2 );
$entityClass2 = $entity2->getDataClass();
$arRecords2 = $entityClass2::getList([
'filter' => [
'UF_XML_ID' => $arHighloadProperty2["VALUE"]
],
]);
foreach ($arRecords2 as $record2)
{
/**
* Тут любые преобразования с записью, полученной из таблицы.
* Я транслировал почти все напрямую.
*
* Нужно помнить, что например в UF_FILE возвращается ID файла,
* а не полный массив описывающий файл
*/
$arRecord2 = [
'ID' => $record2['ID'],
'UF_NAME' => $record2['UF_NAME'],
'UF_SORT' => $record2['UF_SORT'],
'UF_XML_ID' => $record2['UF_XML_ID'],
'UF_LINK' => $record2['UF_LINK'],
'UF_DESCRIPTION' => $record2['UF_DESCRIPTION'],
'UF_FULL_DESCRIPTION' => $record2['UF_FULL_DESCRIPTION'],
'UF_DEF' => $record2['UF_DEF'],
'UF_FILE' => [],
'~UF_FILE' => $record2['UF_FILE'],
];
/**
* Не очень быстрое решение - сколько записей в инфоблоке, столько файлов и получим
* Хорошо было бы вынести под код и там за 1 запрос все получить, а не плодить
* по дополнительному запросу на каждый файл
*/
if ( !empty($arRecord2['~UF_FILE']) )
{
$arRecord2['UF_FILE'] = \CFile::getById($arRecord2['~UF_FILE'])->fetch();
}
$arResult["PROPERTIES"]['VID_SPR']['EXTRA_VALUE'][] = $arRecord2;
}
}
}
?>
function create_product_attribute() {
global $wpdb;
$i = 1;
while ($i<=15) {
$term = wp_insert_term(
$i, // новый термин
'pa_pro', // таксономия
array(
'slug' => $i
)
);
// $term['term_id'];
$wpdb->update(
$wpdb->prefix . 'termmeta', // указываем таблицу
array('meta_value' => $i), // меняем значение
array( // где
'term_id' => $term['term_id']
),
array( '%s' ),
array(
'%d',
'%s'
)
);
$i++;
}
}
add_action( 'init', 'create_product_attribute' );