Opis tam zamieszczony przeznaczony jest dla wcześniejszych wersji; ten tutaj powinien działać dla wersji 1.4.7 aczkolwiek nie zostało to przetestowane.
1. Musimy stworzyć dla naszego sklepu znak wodny. Rekomendowanym formatem pliku jest przeźroczysty PNG.
Zapisujemy obrazek jako "watermark.png" i umieszczamy na serwerze w katalogu /image/userfiles
2. Otwieramy plik /system/library/image.php i dodajemy kod:
- Kod: Zaznacz cały
public function addwatermark($position = 'bottomright') {
$watermark = imagecreatefrompng(DIR_IMAGE . 'userfiles/watermark.png');
$watermark_width = imagesx($watermark);
$watermark_height = imagesy($watermark);
switch($position) {
case 'topleft':
$watermark_pos_x = 0;
$watermark_pos_y = 0;
break;
case 'topright':
$watermark_pos_x = $this->info['width'] - $watermark_width;
$watermark_pos_y = 0;
break;
case 'bottomleft':
$watermark_pos_x = 0;
$watermark_pos_y = $this->info['height'] - $watermark_height;
break;
case 'bottomright':
$watermark_pos_x = $this->info['width'] - $watermark_width;
$watermark_pos_y = $this->info['height'] - $watermark_height;
break;
case 'middle':
$watermark_pos_x = ($this->info['width'] - $watermark_width)/2;
$watermark_pos_y = ($this->info['height'] - $watermark_height)/2;
break;
}
imagecopy($this->image, $watermark, $watermark_pos_x, $watermark_pos_y, 0, 0, $watermark_width, $watermark_height);
imagedestroy($watermark);
}
Funkcja ta tworzy obiekt ze znaku wodnego i umieszcza go na zdjęciu.
3. Następnie w pliku /catalog/model/tool/image.php umieszczamy kod:
- Kod: Zaznacz cały
function image_watermark($filename) {
if ( (!file_exists(DIR_IMAGE . $filename)) && (!file_exists(DIR_IMAGE . 'cache/' . $filename)) ) {
return;
}
if (file_exists(DIR_IMAGE . 'cache/' . $filename)) {
$old_image = DIR_IMAGE . 'cache/' . $filename;
} else {
$old_image = DIR_IMAGE . $filename;
}
$new_image = 'cache/' . substr($filename, 0, strrpos($filename, '.')) . '-w.jpg';
if (!file_exists(DIR_IMAGE . $new_image) || (filemtime($old_image) > filemtime(DIR_IMAGE . $new_image))) {
$image = new Image($old_image);
$image->addwatermark('middle');
$image->save(DIR_IMAGE . $new_image);
}
if (isset($_SERVER['HTTPS']) && (($_SERVER['HTTPS'] == 'on') || ($_SERVER['HTTPS'] == '1'))) {
return HTTPS_IMAGE . $new_image;
} else {
return HTTP_IMAGE . $new_image;
}
}
4. W pliku /catalog/controller/product.php znajdujemy:
- Kod: Zaznacz cały
$this->data['popup'] = $this->model_tool_image->resize($image, $this->config->get('config_image_popup_width'), $this->config->get('config_image_popup_height'));
i zamieniamy na:
- Kod: Zaznacz cały
$productimage = image_resize($image, $this->config->get('config_image_popup_width'),$this->config->get('config_image_popup_height'));
$wmimage = image_watermark(basename($productimage));
$this->data['popup'] = $wmimage;
Teraz zdjęcia w sklepie powinny mieć wybrany przez nas znak wodny. Tutaj zamieszczony jest tylko skrótowy opis, więcej na stronie autora dodatku: http://www.webopius.com/content/406/creating-image-watermarks-in-opencart