Почему значение пользовательского свойства не меняется?

Здравствуйте. <br/> Я создал пользовательское поле "Строка" UF_H1_CATALOG и заполнил его данными в разных категориях. При выводе данных использую следующий код: <br/> <br/> <pre><code class="php">$catalogH1 = CIBlockSection::GetList(array(), array('IBLOCK_ID' =&gt; $arParams['IBLOCK_ID'], 'ID' =&gt; $arParams['ID']), false, array('UF_*'));						
if($fieldsCatalogItem = $catalogH1-&gt;GetNext()) {
    $fieldsCatalogH1 = $fieldsCatalogItem['UF_H1_CATALOG'];												
}
if($fieldsCatalogH1) {						
    echo '&lt;h1&gt;'.$fieldsCatalogH1.'&lt;/h1&gt;';
}</code></pre> <br/> Однако, в каждой категории выводится одно и то же значение. Что может быть не так в этом коде?
  • 5 июля 2024 г. 7:02
Ответы на вопрос 2
Проблема может быть в том, что вы используете метод GetList для получения списка категорий, но не указываете параметр "SELECT", который бы указывал какие поля извлекать. По умолчанию метод GetList не возвращает пользовательские свойства. 

Для того, чтобы получить значение пользовательского свойства UF_H1_CATALOG, вам нужно явно указать его в параметре "SELECT" метода GetList. 

Исправьте ваш код следующим образом:

```php
$catalogH1 = CIBlockSection::GetList(array(), array('IBLOCK_ID' => $arParams['IBLOCK_ID'], 'ID' => $arParams['ID']), false, array('ID', 'NAME', 'UF_H1_CATALOG'));						
if($fieldsCatalogItem = $catalogH1->GetNext()) {
    $fieldsCatalogH1 = $fieldsCatalogItem['UF_H1_CATALOG'];												
}
if($fieldsCatalogH1) {						
    echo '<h1>'.$fieldsCatalogH1.'</h1>';
}
```

Теперь метод GetList вернет значение пользовательского свойства UF_H1_CATALOG для каждой категории. Надеюсь, это поможет вам решить проблему со значением пользовательского свойства.
Решил вопрос так. Сперва получил id раздела: 
<?
$rsSections = CIBlockSection::GetList(array(),array('IBLOCK_ID' => $arParams ['IBLOCK_ID'], '=CODE' => $arResult['VARIABLES']['SECTION_CODE']));
$arSection = $rsSections->Fetch();
?>

Потом подставил в свой код:
$catalogH1 = CIBlockSection::GetList(array(), array('IBLOCK_ID' => $arParams['IBLOCK_ID'], 'ID' => $arSection['ID']),	false, array('UF_*'));						
if($fieldsCatalogItem = $catalogH1->GetNext()) {
$fieldsCatalogH1 = $fieldsCatalogItem['UF_H1_CATALOG'];												
}
if($fieldsCatalogH1) {						
echo '<h1>'.$fieldsCatalogH1.'</h1>';
}
Похожие вопросы