Znak wodny naszego sklepu na ka?dym zdj?ciu

Tutaj można opisywać i umieszczać porady jak krok po kroku dokonać zmian i poprawek w systemie; np. jak możemy zmodyfikować dany skrypt, zmienić logo sklepu, jak dodać link w stopce, jak przenieść moduł, itd.

Znak wodny naszego sklepu na każdym zdjęciu

Postprzez potas » 27 maja 2010, o 11:27

Na stronie http://www.webopius.com/content/406/creating-image-watermarks-in-opencart znajduje się opis jak dodać bardzo fajną funkcję w naszym sklepie opartym o Opencart - automatycznie umieszczać znak wodny (watermark) na każdym zdjęciu.

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
potas
Administrator
 
Posty: 192
Dołączył(a): 30 paź 2009, o 14:31

Re: Znak wodny naszego sklepu na każdym zdjęciu

Postprzez tomeczekf » 21 lut 2011, o 20:26

opis postępowania w wersji 1.4.9.3 nie działa :!:
Avatar użytkownika
tomeczekf
 
Posty: 8
Dołączył(a): 10 lut 2011, o 23:14


Powrót do Poprawki i zmiany w Opencart

Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 0 gości

cron