Ответы пользователя по тегу OpenCart
  • Как сделать обрезку главной фотографии по короткой стороне opencart 2.3?

    @maxeee52
    В модель:

    function cropsize($filename, $width, $height) {
    
            if (!is_file(DIR_IMAGE . $filename) || substr(str_replace('\\', '/', realpath(DIR_IMAGE . $filename)), 0, strlen(DIR_IMAGE)) != str_replace('\\', '/', DIR_IMAGE)) {
                return null;
            }
    
            $extension = pathinfo($filename, PATHINFO_EXTENSION);
    
            $old_image = $filename;
            $new_image = 'cache/' . substr($filename, 0, strrpos($filename, '.')) . '-cr-' . $width . 'x' . $height . '.' . $extension;
    
            if (file_exists(DIR_IMAGE . $new_image) || (filemtime(DIR_IMAGE . $old_image) > filemtime(DIR_IMAGE . $new_image))) {
                $path = '';
    
                $directories = explode('/', dirname(str_replace('../', '', $new_image)));
    
                foreach ($directories as $directory) {
                    $path = $path . '/' . $directory;
    
                    if (!file_exists(DIR_IMAGE . $path)) {
                        @mkdir(DIR_IMAGE . $path, 0777);
                    }
                }
    
                $image = new Image(DIR_IMAGE . $old_image);
                $image->cropsize($width, $height);
                $image->save(DIR_IMAGE . $new_image);
            }
    
            if ($this->request->server['HTTPS']) {
                return $this->config->get('config_ssl') . 'image/' . $new_image;
            } else {
                return $this->config->get('config_url') . 'image/' . $new_image;
            }
    
        }


    В system/library/image

    public function cropsize($width = 0, $height = 0) {
    	    
    	    	if (!$this->info['width'] || !$this->info['height']) {
    	    		return;
    	    	}
            
    	        //afmetingen bepalen
    	        $photo_width = $this->info['width']; 
    	        $photo_height = $this->info['height'];
    	        
    	        $new_width = $width;
    	        $new_height = $height;
    	        
    	        //als foto te hoog is
    	        if (($photo_width/$new_width) < ($photo_height/$new_height)) {
    	        
    	        	$from_y = ceil(($photo_height - ($new_height * $photo_width / $new_width))/2);
    	        	$from_x = '0';
    	        	$photo_y = ceil(($new_height * $photo_width / $new_width)); 
    	        	$photo_x = $photo_width;
    	        
    	        }
    	        
    	        //als foto te breed is
    	        if (($photo_height/$new_height) < ($photo_width/$new_width)) {
    
    	        	$from_x = ceil(($photo_width - ($new_width * $photo_height / $new_height))/2);
    	        	$from_y = '0';
    	        	$photo_x = ceil(($new_width * $photo_height / $new_height)); 
    	        	$photo_y = $photo_height;
    
            	}
    	        
    	        //als verhoudingen gelijk zijn	
    	        if (($photo_width/$new_width) == ($photo_height/$new_height)) {
    	        
    	        	$from_x = ceil(($photo_width - ($new_width * $photo_height / $new_height))/2);
    	        	$from_y = '0';
    	        	$photo_x = ceil(($new_width * $photo_height / $new_height)); 
    	        	$photo_y = $photo_height;
    	        
    	        }
    	        
    	        	        
    	       	$image_old = $this->image;
    	        $this->image = imagecreatetruecolor($width, $height);
    			
    			if (isset($this->info['mime']) && $this->info['mime'] == 'image/png') {		
    				imagealphablending($this->image, false);
    				imagesavealpha($this->image, true);
    				$background = imagecolorallocatealpha($this->image, 255, 255, 255, 127);
    				imagecolortransparent($this->image, $background);
    			} else {
    				$background = imagecolorallocate($this->image, 255, 255, 255);
    			}
    			
    			imagefilledrectangle($this->image, 0, 0, $width, $height, $background);
    		
    		
    	        imagecopyresampled($this->image, $image_old, 0, 0, $from_x, $from_y, $new_width, $new_height, $photo_x, $photo_y);
    	        imagedestroy($image_old);
    	           
    	        $this->info['width']  = $width;
    	        $this->info['height'] = $height;
    
    	    
    	    }
    Ответ написан
  • Как убрать обязательные поля заполнения для дополнительных языков Opencart 3?

    @maxeee52
    Можно при сохранении использовать данные с других языков.

    Игнорировать обязательные поля не получится, т.к. нарвётесь на ошибки в моделях или при сохранении в базу данных
    Ответ написан
    Комментировать
  • Как добавить языковую версию поля в Opencart 2.3?

    @maxeee52
    Учтите, что адрес используется в многих местах в Opencart и его изменение может повлечь за собой ряд проблем, которые необходимо будет устранить.

    Я б посоветовал сделать дополнительное поле (например config_custom_address)

    Вьюха:

    {% for language in languages %}
                        <div class="input-group"><span class="input-group-address"><img src="language/{{ language.code }}/{{ language.code }}.png" title="{{ language.name }}" /></span>
                          <textarea name="config_custom_address[{{ language.language_id }}]" rows="5" placeholder="{{ help_address }}" id="input-address" class="form-control">{{ config_custom_address[language.language_id] }}</textarea>
                        </div>
                      {% endfor %}
    Ответ написан
  • Opencart 3 ничего не происходит при клике на “подтвердить заказ”?

    @maxeee52
    смотрите во вкладке Network какие ответы приходят
    Ответ написан
    Комментировать