Добро пожаловать на сайт <БагБД>, где вы можете задавать вопросы о программировании и разработке на Битрикс и Битрикс24, и получать быстрые и квалифицированные ответы от профессионалов!

Проблемы с каталогом

00 голосов
2
Здравствуйте!

У меня есть несколько вопросов по поводу использования инфолоков и компонента "Каталог" в Битрикс.

1. Вопросы по компоненту "catalog.section.list"

Этот каталог выводит список секций инфоблока, находящихся в текущей секции.
Однако, я не нашел способа отображать дополнительные свойства для секций, то есть конструкция вида $arSection["PROPERTIES"]["PROPERTY_NAME"]["VALUE"], аналогичная которой применяется в компоненте catalog.section для показа списка элементов, не прокатывает. Возможно ли как то отображать дополнительные свойства для секции без редактирования кода самого компонента?

Также, возможно ли в этом компоненте как то отображать информацию об элементах, находящихся в каждой из секций? Поясню - в секциях у меня находятся элементы, обладающие свойством color, которое означает цвет товара. Я хочу, чтобы на странице списка секций отображалась информация о цветах товаров, находящихся в ней. Возможно ли это сделать?

2. По компоненту "catalog.element"

Не получается нормально отобразить дополнительное свойство, если оно содержит файл. Если я использую $arProperty["DISPLAY_VALUE"], то ссылка отображается в стандартном виде - текст "загрузить", с которого ссылка ведет на файл.

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

Я попробовал использовать конструкцию вида

<?if ( strlen(trim($arResult["PROPERTIES"]["MAKET"])) > 0 ):?>
<?$ourPath= CFile::GetPath($arResult["PROPERTIES"]["MAKET"]["VALUE"]);?>
<a href="<?echo $ourPath;?>">MAKET</a>
<?endif?>

Однако, по какой-то неведомой мне причине, для каждого элемента мне всегда возращается ссылка на какой-то загадочный файл /upload/iblock/43e/google.jpg, а не на файл, загруженный мною для элемента.

Как можно решить эту проблему? Какой код нужен, чтобы вытащить ссылку на файл, лежащий в дополнительном свойстве инфоблока?
спросил 16 Апр, 14 от Ayros (100 баллов)

2 Ответы

00 голосов
1. Без изменения кода компонента по-моему нельзя.
2. Что бы получить файл, попробуйте так (пример получения превьюшки):
$rsItems = CIBlockElement::GetList($arOrder, $arFilter, false, $arNavParams, $arSelect);
while ( $arItem = $rsItems->GetNext() )
{
echo "<pre> ",$arItem["PREVIEW_PICTURE"],"<br>";
if(isset($arItem["PREVIEW_PICTURE"]))
$arItem["PREVIEW_PICTURE"] = CFile::GetFileArray($arItem["PREVIEW_PICTURE"]);
print_r($arItem["PREVIEW_PICTURE"]);
}
ответил 21 Ноя, 14 от OPEX (720 баллов)
00 голосов
1. Да, тоже самое мне сказали и в поддержке :( Что ж, придется ковыряться...
2. А здесь причина видимо была в том, что свойство у меня было множественное и пришлось немного изменить код:

<?if ( strlen(trim($arResult["PROPERTIES"]["MAKET"]["VALUE"])) > 0 ):?>
<?foreach ($arResult["PROPERTIES"]["MAKET"]["VALUE"] as $fid):?>
<?$fileLink = CFile::GetPath($fid);?>
MAKET<br />
<?endforeach;?>
<?endif?>
<br />

Теперь работает :)
ответил 17 Март, 15 от Ayros (100 баллов)

Похожие вопросы

0 голосов
3 ответов
спросил 30 Март, 14 от Jugolo (180 баллов)
0 голосов
3 ответов
спросил 03 Апр, 14 от Grimmi (2,560 баллов)
0 голосов
4 ответов
спросил 28 Янв, 14 от ZeroZ (100 баллов)
0 голосов
4 ответов
спросил 01 Окт, 13 от Babai (260 баллов)
0 голосов
1 ответ
спросил 19 Июнь, 17 от аноним