Битрикс удалить файл из множественного свойства
Привожу весь текст скрипта.
Назначение его такого. У нас имеется множественное свойство MORE_PHOTO. Скрипт должен сгенерировать привьюшки для всех изображений этого свойства, а затем эти привьюшки записать в свойство PHOTO_SM.
Скрипт удалось заставить заработать, но не без маленького глюка. Первый раз отрабатывает прекрасно. Но вот при повторном сохранении элемента инфоблока в полях PHOTO_SM вылазят пустые поля, причем, количество их в точности совпадает с количеством элементов в MORE_PHOTO.
nietzschean Расскажите как в вашем примере вы применили совет
nikki21
У меня точно такая же задача как у nietzschean.
Вот полный код написанного скрипта, глюков, подобных описанным, в нём не обнаружил.
В начале я чищу все значения множественного свойства, сразу замечу - я сделал на форме "флажок", и только когда он включен - происходит данный механизм
То есть, в соответствии с советом, я создаю массив $arr и в нем прописываю поле "del", затем через SetProperyValueCode сохраняю изменения, далее - удаляю файл:
На втором этапе - записываю все файлы заново
Приведу еще раз код, который удаляет один файл из множества в свойстве ИБ:
PS: мой вариант особо не отличается от того, что писали выше, просто лучше оформлен для понимания.
FILES - Имя свойства в ИБ
$nIBlockID - ID ИБ
$nElementID - ID элемента ИБ
Уважаемый nietzschean , а чем вас не устроили функции для работы с изображениями CFile::ResizeImage и CFile::ResizeImageGet в условиях поставленной задачи? Или это для примера было вообще?
Свойств это не касается, но интересен ваш опыт, так как сам часто с изображениями работаю. Мальчик был настолько ленив, что специально вставал пораньше - чтобы подольше ничего не делать! (с)
Нет при использовании array('VALUE' => array("del" => "Y" ) файл сам удаляется с диска. (проверял лично)
А если удалить файл через:
то в инфоблоке останется строчка файл не найден и на сайте будет выводиться битая картинка.Цитата |
---|
Нет при использовании array('VALUE' => array("del" => "Y" ) файл сам удаляется с диска. (проверял лично) |
У меня ни один код из ветки не завёлся, потому что функция АВТОР не очищала массив, а дополненный постоянно сохраняла. Битрикс не готов к такому беспределу, поэтому я написал на один запрос на удаление.
Как называется, когда ты перерыл всю документацию, потом два дня гуглил, и только потом нашел единственный пост, где объясняется, как выполнить базовую операцию удаления?Уровень официальной документации никакой.
На сайте вставили новые фото и удалили несколько старых, обновление множественного поля типа файл прошло так.
здесь не надо чистить весь массив старых файлов и заново записывать новыми значениями
В этой заметке расскажу как красиво вывести множественное свойство типа файл в инфоблоке 1С-Битрикс. С показом оригинального названия файла, его транслитированной версии, размера файла в килобайтах и, само собой, ссылкой на скачивание.
Исходные данные для вывода файлов
Итак, в инфоблоке каталога сайта имеем стандартное, множественное свойство "типа файл" с кодом "FILES".
Если мы его выведем, штатным способом, через вывод свойств- как оно задумано в Битрикс изначально. Выглядеть это будет не казисто и не интересно
Абсолютно не интересно и самое главное не информативно. В моем случае, в данное свойство загружаются документы. Причем они в разных форматах и разного размера. Пользователь должен видеть и название документа и его размер с форматом. Например вот так:
Выводим свойство файл через API Битрикс- получая все данные о файлах
Все достаточно просто, так как множественные свойства это обычные массивы. Мы можем получить все данные о каждом файле, просто зная код свойства, в моем случае "FILES". Выглядеть foreach будет следующим образом.
Расскоментировав строку
// echo '<pre>';print_r($arProperty);echo '</pre>';
Вы сможете увидеть все данные о каждом файле, доступные для вывода. По мимо основных, там есть и дата загрузки и тип файла.
В принципе и все. Конкретно в моем случае, в примере выше, результат вывода выглядет следующим образом:
Несколько полезных моментов
Байты в килобаты (размер файла), я привратил, обычной php функцией округления в большую сторону round. Предварительно приведя байты в килобаты. просто разделив $arProperty['FILE_SIZE'] на 1024 (смотри в коде выше).
Иконки для разных типов файлов, назначил через CSS - тут простая стилизация. Зная расширение файла, а точнее расширенеие на которое заканчивается ссылка, просто прописал background для каждой разновидности ссылки. Вот так:
Читайте также: