Доброго времени суток!
Первым, что хочу сказать: да я уже гуглил и находил вроде как много ответов, но у меня они почему-то стопорились.
Задача: Сделать альтернативу ТП благодаря свойству "Привязкой к элементам".
Для реализации нужно получить:
1) id,
2) имя,
3) ссылку,
4) параметр CAN_BUY или хотя-бы QUANTITY
5) какое-либо свойство (сейчас реализую по цвету)
1-3 пункт получить удалось, сейчас проблема с 4 и 5 пунктами и, если даже получить QUANTITY чуть проще, то с цветом засада.
Сейчас цвета реализованы справочником и значения выдавать не хотят, я побывал добавить еще 2 разных типа свойств: "строка" и "список" - если даже вызываю свойство по символьному коду - получаю пустое значение.
Код в карточке товара:
<?php if (count($arResult['CATALOG_TP_COLOR']) > 0) : ?>
<div class="offer-property-row mb-3 first last">
<div class="font-weight-bold">Цвет: </div>
<?php foreach ($arResult['CATALOG_TP_COLOR'] as $id => $product) : ?>
<? echo "<pre>"; print_r($product['COLOR']); echo "</pre>";?>
<a class="btn btn-light mb-1 <?php if ($product['ID'] == $arResult['ID']) : echo 'active'; ?><?php endif; ?>" title="<?php echo $product['NAME']; ?>" href="<?php echo $product['DETAIL_PAGE_URL']; ?>">
<?php echo $product['NAME']; ?> - <?php echo $product['QUANTITY']; ?>
</a>
<?php endforeach; ?>
</div>
<?php endif; ?>
Тут я пробую вызывать нужные мне свойства, но все тщетно:
$TPcolorsList = array();
$arResult['CATALOG_TP_COLOR'] = array();
$arSelect = array("IBLOCK_ID", "ID", "NAME", "DETAIL_PAGE_URL");
$arFilter = Array("IBLOCK_ID" => 5, "ID" => $arResult['PROPERTIES']['CATALOG_TP_COLOR']['VALUE']);
$res = CIBlockElement::GetList(array(), $arFilter, false, array("nPageSize" => 10), $arSelect);
while ($ob = $res->GetNextElement()) {
$arFields = $ob->GetFields();
$TPcolorsList[$arFields['ID']]['NAME'] = $arFields['NAME'];
$TPcolorsList[$arFields['ID']]['DETAIL_PAGE_URL'] = $arFields['DETAIL_PAGE_URL'];
$TPcolorsList[$arFields['ID']]['ID'] = $arFields['ID'];
$TPcolorsList[$arFields['ID']]['QUANTITY'] = $arResult['PRODUCT']['QUANTITY'];
$TPcolorsList[$arFields['ID']]['COLOR'] = $arResult;
}
if (count($TPcolorsList) > 0) {
$arResult['CATALOG_TP_COLOR'] = $TPcolorsList;
}
unset($TPcolorsList);
unset($arSelect);
unset($arFilter);
unset($res);