Вывести все значения списка для множественного свойства

RSS
Вывести все значения списка для множественного свойства
 
Здравствуйте, Михаил! За последние 2-3 года перегуглил несколько раз интернет, решения найти не смог, поэтому обращаюсь к вам сюда.

В инфоблоке имеется множественное свойство, наванное мной TOPUP, тип - список.
В настройках этого свойства доступны типовые значения списка, среди которых: VALUE_XML_ID, VALUE, VALUE_SORT.

Необходимо вывести эти значения списка массивами, так, чтобы каждый такой массив содержал три этих значения (VALUE_XML_ID, VALUE, VALUE_SORT). То есть результат на странице должен выглядеть примерно так:

Способы оплаты:
  1. 38ec6725c7ee8fafb2f5c7847bf186aa - PayPal (300)
  2. a7a4376f83f3c453486ed84f06b181fc - Qiwi (400)
  3. 25c893a5184ad9add847ed72049e3f2e - WebMoney (500)
  4. e7fa56ac91305648b93f0f0cfe6629f8 - Yoomoney (600)
Зачем так нужно - например, VALUE_XML_ID сможет служить именем файла с картинкой-логотипом для соответствующей платёжной системы, или другие кейсы.
 
Пока плохо понятна задача. Сможете описать "на пальцах" на каком-то конкретном примере?
Прям: вот есть элемент и у него так-то заполнено это свойство.
Вот так должно вывестись (дизайн вывода, хотя бы схематичный).

Может быть, вашу задачу можно решить более изящно. Тогда нужно изначальное "ТЗ не ТЗ- но описание конечной задачи".
Изменено: Михаил Базаров - 11.03.2024 17:09:48
 
Постарался набросать на другом, слегка "очищенном" от лишних сущностей, примере.

Как настроено свойство инфоблока

  • Код свойства - CPU
  • Тип - список, множественное свойство
  • Внешний вид - флажки
Заданные значения списка для свойства следующие (VALUE - VALUE_SORT соответственно):
  • AMD Athlon - 500
  • AMD Epyc - 1010
  • AMD FX - 1030
  • AMD Opteron - 1050
  • AMD Ryzen - 1080
  • AMD Trinity - 1110
  • Ampere Altra - 1250
  • Apple - 1400
  • Broadcom - 1900
  • Intel Atom - 3100
  • Intel Celeron - 3200
  • Intel Core - 3300
  • Intel Pentium - 3700
  • Intel Xeon - 3900
В админке это выглядит так - см. bitrix_values2_adminpanel.png


Как добавляются элементы

Добавляя/редактируя элемент, редактор отмечает флажками те процессоры, которые должны будут отображаться для него на странице (см. скриншот bitrix_create_element.png)


Желаемый код шаблона компонента (моё субъективное видение, приблизительно):

Код
<h6>Процессоры</h6>

<?/*пример проверки, отметил ли что-то редактор флажками*/if($arResult["PROPERTIES"]["CPU"]["VALUE_SORT"][0]):?>
   <?начало цикла?>
      <div>
         <span class="img"><img src="/path/to/images/<?=$arResult["PROPERTIES"]["CPU"]["VALUE_SORT"];?>.svg"></span>
         <span class="value"><?=$arResult["PROPERTIES"]["CPU"]["VALUE"];?></span>
      </div>
   <?конец цикла?>
<?endif?>

Как нужно, чтобы это выглядело на веб-странице:

см. скриншот bitrix_webpage_as_be.png

На странице видим лого процессора (имя SVG-файла основе VALUE_SORT) и название процессора (собственно VALUE).


Примечания

  • Список процессоров не является конечным. Иногда они могут добавляться/переименовываться/удаляться.
  • Вместо VALUE_SORT можно использовать VALUE_ENUM, VALUE_ENUM_ID или VALUE_XML_ID - мне не принципиально.
Готов предоставить другие дополнительные вводные, если нужно.
 
Если я все правильно понял:
Не проще использовать множественный справочник? Оно же "привязка к HL блоку" через свойство?
Как-то так
https://bazarow.ru/blog-note/16683/
Там задача другая, но суть (вроде) таже
 
Спасибо за предложенное решение - таким образом не пробовал, на досуге попробую изучить. Неожиданно нашёл более простой для меня способ сделать так, как предполагал изначально:
Код
<?/*предположим, процессоров макс. 99, но можно поставить больше*/for($i = 0;$i<=99;$i++):?>
   <?/*пример проверки, отметил ли что-то редактор флажками*/if($arResult["PROPERTIES"]["DEDIC_OS"]["VALUE_SORT"][$i]):?>
      <div>
         <span class="img"><img src="/path/to/images/<?=$arResult["PROPERTIES"]["CPU"]["VALUE_SORT"][$i];?>.svg"></span>
         <span class="value"><?=$arResult["PROPERTIES"]["CPU"]["VALUE"][$i];?></span>
      </div>
   <?endif?>
<?endfor?>
Всё работает и выводится на странице точно так, как хотел видеть. Единственный открытый для меня вопрос: может ли грозить этот код всплеском запросов к БД?
Форма ответов
 
Текст сообщения*
Перетащите файлы
Ничего не найдено
Файл
Загрузить картинки
 
Поблагодарить и поддержать:
Или подписаться на boosty канал: Видео на Ютубе