Меню

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

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 канал: Видео на Bst
Сайт в режиме тех обслуживания

Сообщения форума и комментарии не сохраняются

Возвращайтесь после 12-го января

Блог-note: заметки разработчика

Если товар в корзине, поменять кнопку на "В корзине" в новом шаблоне 1С-Битрикс

Ранее я уже делал заметку на эту тему. Тогда, мы меняли значение input-а при добавлении товара в корзину в старых шаблон...

Получить и вывести все цены товара в 1С-Битрикс

Задача: получить и вывести все цены товара по его ID в каталоге 1С-Битрикс (например, в детальной карточке catalog.e...

Создание блога с комментариями, оценками и просмотрами на сайте с 1С-Битрикс

Если на вашем сайте требуется создание раздела с блогом или новостями, статьями. Записям в которых, посетители смогу ста...

Вывести артикул в печатную форму бланка заказа

Задача: в печатную форму бланка заказа добавить артикулы товаров и данные о пользователе.

Перенос Битрикс сайта с хостинга на хостинг, инструкция

Достаточно часто спрашивают как перенести сайт работающий на 1С Битрикс с одного хостинга на другой, как раз подвернулас...

Уникальный URL для торговых предложений (SKU) с возможностью автоматического выбора предложения при переходе по ссылке.

Задача: на странице товара необходимо реализовать функцию автоматического изменения URL при выборе определенной товарной...

Очистка корзины в 1С-Битрикс одним нажатием

В стандартной корзине Битрикс не хватает кнопки для полной очистки корзины одним нажатием. Требуется это довольно редко,...

Очистить брошенные корзины с помощью API 1С-Битрикс

Задача: в интернет-магазине накапливается большое количество брошенных корзин, нужно их очистить. Включая и корзины заре...

Кастомизация поля input type file, свой внешний вид

Задача: Поле input type="file" предоставляет возможность загрузки файлов на веб-странице. Однако стандартный в...