Изменить внешний вид свойств предложений в карточке товара

Верстка вывода свойств предложений в шаблоне template.php компонента cataog.element выглядит следующим образом:

<dl class="product-item-detail-properties" id="<?=$itemIds['DISPLAY_PROP_DIV']?>"></dl>  

 Данные формируются с помощью скрипта в script.js:

BX.adjust(this.obSkuProps, {style: {display: ''}, html: this.offers[index].DISPLAY_PROPERTIES}); 

Откуда же берется this.offers[index].DISPLAY_PROPERTIES, который включает в себя теги <dt> и <dd>?
Эта верстка формируется там же в шаблоне, в переменной $current в цикле:

foreach ($jsOffer['DISPLAY_PROPERTIES'] as $property){
$current = '<dt>'.$property['NAME'].'</dt><dd>'.(
is_array($property['VALUE'])
? implode(' / ', $property['VALUE'])
: $property['VALUE']
).'</dd>';
$strAllProps .= $current;

if (isset($arParams['MAIN_BLOCK_OFFERS_PROPERTY_CODE'][$property['CODE']]))
{
$strMainProps .= $current;
}
}
Значение этой переменной записывается в $strAllProps, а та в свою очередь в:

$jsOffer['DISPLAY_PROPERTIES'] = $strAllProps;
$jsOffer['DISPLAY_PROPERTIES_MAIN_BLOCK'] = $strMainProps;

То есть поменяв верстку, записываемую в current, можно изменить внешний вид свойств торговых предложений.
Конкретно в своем случае я изменила ее так:

foreach ($jsOffer['DISPLAY_PROPERTIES'] as $property)
{
if($property['CODE'] == "Zagruzit_maket") {
foreach ($fullOffer["PROPERTIES"]["Zagruzit_maket"]['VALUE'] as $key=>$value) {
$current .= '<div><a target="_blank" href="'.$value.'">'.$fullOffer['PROPERTIES']["Zagruzit_maket"]['DESCRIPTION'][$key].'</a></div>';
}
}
else {
$current = '<dt>'.$property['NAME'].'</dt><dd>'.(
is_array($property['VALUE'])
? implode(' / ', $property['VALUE'])
: $property['VALUE']
).'</dd>';
}
$strAllProps .= $current;
if (isset($arParams['MAIN_BLOCK_OFFERS_PROPERTY_CODE'][$property['CODE']]))
{
$strMainProps .= $current;
}
}
То есть, если это свойство с кодом Zagruzit_maket, то верстка меняется. Использован массив $fullOffer для получения описания DESCRIPTION и значения свойства в нужном формате.

bitrixone © 2024