Watermark (водяной знак) для opencart 2.3.0.2
Для добавления водяного знака к изображениям товаров вашего магазина на opencart 2.3.0.2 необходимо выполнить несколько простых действий...
Создайте резервную копию файла
/catalog/model/tool/image.phpСоздайте изображение в формате .png. Сохраните его с именем watermark.png и загрузите в директорию /image вашего сайта. Я создал изображение размером 500х500px.
Откройте файл image.php находящийся в директории /catalog/model/tool/ и после строки
$image = new Image(DIR_IMAGE . $image_old);
добавьте следующую строку
$image->watermark(new Image(DIR_IMAGE . 'watermark.png'), 'middlecenter');
middlecenter - это позиция водяного знака отображающая его по центру изображения товара.
Позиция может принимать следующие значения:
- topleft - левый верхний угол
- topcenter - сверху по центру
- middleleft - слева посередине
- middleright - справа посередине
- bottomleft - внизу слева
- bottomcenter - снизу по центру
- bottomright - внизу справа
Сохраните файл и перейдите в раздел модификаторы панели администратора сайта. Нажмите кнопку обновить.
После этого необходимо удалить изображения находящиеся в кэше opencart. Для этого перейдите в директорию /image/cache/ и удалите раздел в котором находятся кэшированные изображения товаров. В моем случае это catalog. Очистите кэш браузера и перейдите на сайт. Теперь все изображения товаров отображаются на сайте с водяным знаком находящимся в центре.
Чтобы водяной знак накладывался только на определенные изображения, допустим в карточке товара, необходимо указать размеры изображений для которых будет применен watermark.
В настройках шаблона магазина у меня прописаны следующие значения для размеров изображений в карточке товара.
Добавьте в файл /catalog/model/tool/image.php условие с размерами изображений для обработки.
Замените добавленную ранее строку
$image->watermark(new Image(DIR_IMAGE . 'watermark.png'), 'middlecenter');
на
if ($width == 498 || $height == 498) {
$image->watermark(new Image(DIR_IMAGE . 'watermark.png'), 'middlecenter');
}
if ($width == 600 || $height == 600) {
$image->watermark(new Image(DIR_IMAGE . 'watermark.png'), 'middlecenter');
}
Артур
Сделал все как написано, но почему-то у меня на всех изображениях товара водяной знак в разных местах показывается. Вообще не по центру...
ответ
Администратор
Обновите модификаторы, очистите кэш изображений opencart и браузера.
ответ
Артур
Спасибо! Помогло.
ответ
Антон
Спасибо за безумно простое решение ! побольше таких решений! респект!
ответ
Игорь
Работает, спасибо. перекачал уйму модулей и 0, а эт спасло
ответ
Антон
Сделал всё как Вы написали, но водяной знак отображается очень "криво". Сложно объяснить словами. Можно посмотреть на сайте.
ответ
Администратор
Вам необходимо создать изображение в формате .png с сохранением прозрачности.
ответ
Антон
Всё сохранял с прозрачностью. Может это связано с тем что основные изображения png?
ответ
Администратор
Причин может быть много и разобраться можно лишь детально изучив Ваш проект. Можем решить этот вопрос. Обращайтесь!
ответ
Николай
А не подскажете. есть ли возможность привязать ширину вод.знака к ширине изображения? Поскольку они бывают разных пропорций и очень часто вод.знак выглядит не очень корректно. перекрывая узкие изображаения
ответ
Администратор
Сделайте все изображения одного размера. У меня так. Или пропишите другое изображение для этих размеров.
ответ
Андрей
Здравствуйте! А как указать папки с изображениями, чтобы водяной знак распространялся только на определенные папки, а не на все что есть!?)
ответ
Администратор
Установите нужные размеры изображений для которых применяется водяной знак. https://prospectweb.ru/blog/item/watermark-vodyanoj-znak-dlya-opencart-2-3-0-2/#razmer
ответ
Администратор
Рад, что смог помочь!
ответ