Работа с картинкой для анонса и детальной картинкой элемента инфоблока - 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');