Лично я к watermark отношусь отрицательно. Один из моих поставщиков решил выставлять товары на своем сайте с watermark. Как результат - я не могу автоматизированно выгрузить каталог его товаров к себе. Приходится фотографировать все товары самостоятельно, когда не удается выжать из менеджеров файлики.
Однако, нанесение watermak есть традиция и в Bitrix даже появился с некоторых пор способ их автоматически наносить средствами самой системы, манипулируя настройками полей ИБ. Конечно, не панацея, но лекарство некоторым клиентам нравится.
И вот, один из таких клиентов пожелал наносить такие же водные знаки и на дополнительные фотографии товаров. Дополнительные фотографии были реализованы через свойство ИБ под номером 90, а беглый осмотр файла iblock_element.php в модуле iblock дал несколько строк кода.
В итоге я получил грубое решение задачи:
[spoiler]
Однако, нанесение watermak есть традиция и в Bitrix даже появился с некоторых пор способ их автоматически наносить средствами самой системы, манипулируя настройками полей ИБ. Конечно, не панацея, но лекарство некоторым клиентам нравится.
И вот, один из таких клиентов пожелал наносить такие же водные знаки и на дополнительные фотографии товаров. Дополнительные фотографии были реализованы через свойство ИБ под номером 90, а беглый осмотр файла iblock_element.php в модуле iblock дал несколько строк кода.
В итоге я получил грубое решение задачи:
[spoiler]
// добавление водяной марки на дополнительные фотографии по свойствам инфоблока для детальных изображений AddEventHandler("iblock", "OnBeforeIBlockElementAdd", "ADDWATERMARK"); AddEventHandler("iblock", "OnBeforeIBlockElementUpdate", "ADDWATERMARK"); function ADDWATERMARK(&$arFields){ CModule::IncludeModule('iblock'); if($arFields['IBLOCK_ID']==1 && isset($arFields['PROPERTY_VALUES'][90]) && count($arFields['PROPERTY_VALUES'][90])){ $arIBlock = CIBlock::GetArrayByID($arFields["IBLOCK_ID"]); $arDef = $arIBlock["FIELDS"]["DETAIL_PICTURE"]["DEFAULT_VALUE"]; foreach($arFields['PROPERTY_VALUES'][90] as $k=>$v){ if(isset($v['VALUE']['tmp_name']) && strlen($v["VALUE"]["tmp_name"]) > 0){ if($arDef["USE_WATERMARK_FILE"] === "Y"){ CIBLock::FilterPicture($arFields['PROPERTY_VALUES'][90][$k]["VALUE"]["tmp_name"], array( "name" => "watermark", "position" => $arDef["WATERMARK_FILE_POSITION"], "type" => "file", "size" => "real", "alpha_level" => 100 - min(max($arDef["WATERMARK_FILE_ALPHA"], 0), 100), "file" => $_SERVER["DOCUMENT_ROOT"].Rel2Abs("/", $arDef["WATERMARK_FILE"]), )); } if($arDef["USE_WATERMARK_TEXT"] === "Y"){ CIBLock::FilterPicture($arFields['PROPERTY_VALUES'][90][$k]["VALUE"]["tmp_name"], array( "name" => "watermark", "position" => $arDef["WATERMARK_TEXT_POSITION"], "type" => "text", "coefficient" => $arDef["WATERMARK_TEXT_SIZE"], "text" => $arDef["WATERMARK_TEXT"], "font" => $_SERVER["DOCUMENT_ROOT"].Rel2Abs("/", $arDef["WATERMARK_TEXT_FONT"]), "color" => $arDef["WATERMARK_TEXT_COLOR"], )); } } } } } |