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

Автоматическое создание картинки для анонса из детальной

00 голосов
4
Добрый день!
Помогите разобраться с проблемой. Пытаюсь настроить автоматическое создание миниатюр для новостей (['PREVIEW_PICTURE']) из детальной картинки (['DETAIL_PICTURE']). В init.php прописана функция для события OnBeforeIBlockElementAdd:
Код
function create_preview_pict(&$arFields){
        if (!empty($arFields['DETAIL_PICTURE']) && empty($arFields['PREVIEW_PICTURE'])){
            ...
            //здесь идет создание уменьшеной копии изображения с именем $f_id, которая сохраняется в папке '/upload/iblock/preview/'.
            ...
            $file_path = $_SERVER["DOCUMENT_ROOT"].'/upload/iblock/preview/'.$f_id.'.jpeg';
            $arFields['PREVIEW_PICTURE'] = CFile::MakeFileArray($file_path);
        }
    }


Все работает ровно до последней строчки. Т.е. миниатюра создается, сохраняется там, где надо, но на последнем шаге не прописывается как превьюшка для элемента инфоблока.
При этом, если пошагово сохранять некоторые данные в лог, то оказывается, что функция вызывается не один раз, а два. В первый раз данные из $arFields не передаются, а второй раз передаются.

ПС. Абсолютно аналогичная функция для OnBeforeIBlockElementUpdate работает.
спросил 28 Окт, 13 от KisskA (120 баллов)

4 Ответы

00 голосов
Чем Вас не утраивает стандартный функционал создания превьюшек?
Может параллельно включен еще стандартный обработчик?
ответил 27 Ноя, 13 от Jaden (260 баллов)
00 голосов
стандартный функционал создания превьюшек - это дополнительно загружать уменьшенную копию детальной. Это как минимум неудобно тем, что клиенту придется заранее создавать две копии одной и той же картинки. А не для всех изменение размера изображения является простой задачей :)

Параллельных обработчиков для события OnBeforeIBlockElementAdd нет. И функцию эту (create_preview_pict()) больше никто не вызывает..
ответил 08 Март, 14 от KisskA (120 баллов)
00 голосов
Подождите, зачем дополнительно загружать превью?

Разве галочки в настройках ИБ:

- Создавать картинку анонса из детальной (если не задана)
- Удалять картинку анонса, если удаляется детальная
- Создавать картинку анонса из детальной даже если задана

отменили?
ответил 28 Июнь, 14 от Jaden (260 баллов)
00 голосов
Да! Я знала, что Битрикс просто обязан уметь это делать! очевидно, плохо искала (
Благодарю за помощь и прошу прощения за собственную глупость :)
ответил 28 Окт, 14 от KisskA (120 баллов)

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

0 голосов
1 ответ
0 голосов
4 ответов
спросил 01 Фев, 14 от NaSTeNa (100 баллов)
0 голосов
4 ответов
спросил 06 Янв, 14 от Tronik (100 баллов)
0 голосов
6 ответов
спросил 13 Окт, 13 от zapekana (180 баллов)