Битрикс. Получаем путь к изображению

Эти поля, как правило, отвечают свойства элемента Картинка для анонса и Детальная картинка. Иногда, создают свойства инфоблока, тип этого свойства файл, и используют для дополнительных изображений (например, галерея товаров).

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

Простой вывод

if (CModule::IncludeModule("iblock")):

	$iblock_id = 1;
	$my_elements = CIBlockElement::GetList (
		Array("ID" => "ASC"),
		Array("IBLOCK_ID" => $iblock_id),
		false,
		false,
		Array('ID', 'NAME', 'DETAIL_PAGE_URL', 'PREVIEW_PICTURE', 'DETAIL_PICTURE')
	);

	while($ar_fields = $my_elements->GetNext())
	{
		echo $ar_fields['PREVIEW_PICTURE']." <br>";

	}

endif;

Выходит, что добавили PREVIEW_PICTURE и DETAIL_PICTURE в массив, который называют arSelect. Когда вывожу значения в поле PREVIEW_PICTURE получаю:

1
2
3

Все норм, получили идентификаторы изображений.

В 1С-Битрикс есть класс CFile — который используется для работы с файлами и изображениями.

Воспользуемся его методом GetPath и получим полный путь к изображению на примере картинки для анонса (для детальной все точно также):

if (CModule::IncludeModule("iblock")):

	$iblock_id = 1;
	$my_elements = CIBlockElement::GetList (
		Array("ID" => "ASC"),
		Array("IBLOCK_ID" => $iblock_id),
		false,
		false,
		Array('ID', 'NAME', 'DETAIL_PAGE_URL', 'PREVIEW_PICTURE', 'DETAIL_PICTURE')
	);

	while($ar_fields = $my_elements->GetNext())
	{
		//echo $ar_fields['PREVIEW_PICTURE']." <br>";
		$img_path = CFile::GetPath($ar_fields["PREVIEW_PICTURE"]);
		echo $img_path." <br>";
	}

endif;

Теперь выводится:

/upload/iblock/c24/c2a29aad47791f81sdffg6fa8fd038d83789.jpg
/upload/iblock/355/35e000d0e7c3fdsfa94b32fb086c627f87eb.jpg
/upload/iblock/899/08847400xcfgf3c59cae1371cf97009228a9.jpg

Можно заменить строчку с echo:

echo "<img src='".$img_path."' alt=''><br>";

Получится:

while($ar_fields = $my_elements->GetNext())
{
//echo $ar_fields['PREVIEW_PICTURE']." <br>";
$img_path = CFile::GetPath($ar_fields["PREVIEW_PICTURE"]);
echo "<img src='".$img_path."' alt=''><br>";
}

Количество просмотров: 134


Понравилась статья?

Возврат к списку