Работа с картинкой для анонса и детальной картинкой элемента инфоблока - techart/bitrix.tao GitHub Wiki

Получение картинки для элемента инфоблока

Получить изображение можно c помощью методов previewPicture() и detailPicture() класса \TAO\Entity. Если метод вызвать без параметров, то будет возвращен экземпляр класса \TAO\File.

$preview = $item->previewPicture();
$detail = $item->detailPicture();

Экземпляр класса \TAO\File будет возвращен даже в том случае, если картинка для элемента инфоблока не залита. Проверить на существование можно так:

if ($detail->id) {
  // Картинка залита
}

Изменение картинки через API

Если картинка уже есть на сервере:

$item->previewPicture('/path/to/image-s.jpg');
$item->detailPicture('/path/to/image.jpg');
$item->save();

Если картинка доступна по HTTP:

$item->previewPicture('http://www.mycoolsite.ru/path/to/image-s.jpg');
$item->detailPicture('http://www.mycoolsite.ru/path/to/image.jpg');
$item->save();

Удаление картинки

$item->previewPicture(false);
$item->detailPicture(false);
$item->save();

Вывод картинки на странице

Для этого используем метод showImage().

$item->previewPicture()->showImage();

Перед выводом изображение можно модифицировать. Для этого необходимо в метод передать условие модификации в виде аргумента. Для редактирования изображений доступны 2 метода: fit и crop.

$item->previewPicture()->showImage('fit200x200'); //перед выводом картинка будет обрезана методом fit до размера 200x200
$item->previewPicture()->showImage('crop200x200');

Кроме того, в метод можно передать массив настроек отображения картинки в параметре extra. Настройки будут переданы в тег img.

$this->detailPicture()->showImage('fit200x200', array('extra' => 'alt="Картинка"')); 

Дополнительные методы для работы с изображениями

Методы принадлежат классу \TAO\File и реализуют API Битрикса.

  • isImage() - проверка типа файла (content_type) на соответствие изображению. Если тип файла совпадает, то возвращается true.
  • contentType() - возвращает значение поля CONTENT_TYPE.
  • path() - возвращает путь к файлу от корневой директории.
  • url() - возвращает путь к файлу сайта.
  • name() - возвращает имя файла с расширением.
  • resizedImage() - изменение размеров картинки. Также можно применить методы fit и crop.
$this->previewPicture()->resizedImage('fit600x600');