Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

[Решено] Изменить путь к image/catalog


Recommended Posts

Здравствуйте,

Есть необходимость изменить путь к картинкам. По умолчанию, в админке, в товарах при попытки выбора изображения открывается image/catalog (при нажатии на уровень вверх не перескакивает в другую папку) , надо другой путь, например image. Измения config.php не помогли.

Version 2.3.0.2
Спасибо всем откликнувшимся.

Надіслати
Поділитися на інших сайтах


при попытки выбора изображения открывается image/catalog (при нажатии на уровень вверх не перескакивает в другую папку)

 

К чему это? Зачем пихать в корневую папку?Стоит забить её  и при наличии слабенького хоста вместо изображений в менеджере картинок будет пусто,даже если там точно что то есть)

Надіслати
Поділитися на інших сайтах

Странный конечно подход,который заменит только название оставив всю суть на том же месте.

 

Было   image/data

Стало image/catalog

 

Что изменится если все картинки не в catalog будут ,а в data ?

 

Меняется запросом в базе данных
 

UPDATE `oc_banner_image` SET `image` =   REPLACE ( image , 'catalog/', 'data/' );
UPDATE `oc_category` SET `image` =   REPLACE ( image , 'catalog/', 'data/' );
UPDATE `oc_manufacturer` SET `image` =   REPLACE ( image , 'catalog/', 'data/' );
UPDATE `oc_product` SET `image` =   REPLACE ( image , 'catalog/', 'data/' );
UPDATE `oc_product_image` SET `image` =   REPLACE ( image , 'catalog/', 'data/' );
UPDATE `oc_setting` SET `value` =  REPLACE ( value , 'catalog/', 'data/' ) WHERE `key` = 'config_logo';
UPDATE `oc_setting` SET `value` =  REPLACE ( value , 'catalog/', 'data/' ) WHERE `key` = 'config_icon';

это переименует на уровне базы пути в картинках из image/catalog  в  image/data.Нужно будет создать эту папку и закинуть в неё все картинки товара.

 

PS но как я думаю это замена мыла на шило...

  • +1 1
Надіслати
Поділитися на інших сайтах

Видимо я не достаточно подробно описал причину. Сайт перенес с 1.5 на 2.3. На старой версии все картинки хранились в image/data, а в новой версии (почему то кому то взбрело в голову) в image/catalog. И теперь, если я добавляю товар и мне нужно выбрать картинку из существующих (которая хранится в image/data), я не могу этого сделать т.к. в админке открывается раздел image/catalog.

То что вы предлагаете - это замена путей, это не решит проблему открытия в качестве дефолтной папки в админке раздела image/catalog

Я не могу все картинки переместить в image/catalog, т.к. в БД ссылки идут на image/data. Все переименовывать ..., если не найду более простого решения видимо придется делать как вы предложили, но только наоборот data в catalog буду менять.

Змінено користувачем Silver111
Надіслати
Поділитися на інших сайтах


С этого и нужно было начинать.Поможет запрос в бд.

 

UPDATE `oc_banner_image` SET `image` =   REPLACE ( image , 'data/', 'catalog/' );
UPDATE `oc_category` SET `image` =   REPLACE ( image , 'data/', 'catalog/' );
UPDATE `oc_manufacturer` SET `image` =   REPLACE ( image , 'data/', 'catalog/' );
UPDATE `oc_product` SET `image` =   REPLACE ( image , 'data/', 'catalog/' );
UPDATE `oc_product_image` SET `image` =   REPLACE ( image , 'data/', 'catalog/' );
UPDATE `oc_setting` SET `value` =  REPLACE ( value , 'data/', 'catalog/' ) WHERE `key` = 'config_logo';
UPDATE `oc_setting` SET `value` =  REPLACE ( value , 'data/', 'catalog/' ) WHERE `key` = 'config_icon';
  • +1 2
Надіслати
Поділитися на інших сайтах

 

С этого и нужно было начинать.Поможет запрос в бд.

 

то же самое с переносом сайта, тоже правил этим запросом.

но такие ссылки есть еще, например, в описании категории или товара, т.е. не в поле image...

вот для них не могу составить запрос. Не поможете?

Надіслати
Поділитися на інших сайтах


Видимо так

 

UPDATE `oc_information_description` SET `description` = REPLACE ( description , 'data/', 'catalog/' );
UPDATE `oc_category_description` SET `description` = REPLACE ( description , 'data/', 'catalog/' );
  • +1 1
Надіслати
Поділитися на інших сайтах

  • 11 months later...
  • 2 months later...

Здравствуйте,  подскажите, запросом в базу  поменял пути, к изображениям,  но на сайте они все равно отображаются с предыдущего места.  

В базе в таблице product  адрес визуально вижу что изменен...

Надіслати
Поділитися на інших сайтах


  • 11 months later...

Подскажите, как в OCStore 2.3.0.2  изменить в редакторе товара возможность сразу  попадать в папку image. (по дефолту image/catalog)

В  версии 2.2 получалось путем редактирования файла admin/controller/common/filemanager.php 

 

 

Надіслати
Поділитися на інших сайтах


Решение вопроса для версии 2.3.0.2 (замена дефолтной папки загрузки изображений image/catalog на image/ваша папка)

Устанавливаем Samarkand File Manager для изображений. Дефолтный не получилось переделать.

Редактируем следующий файл admin/controller/common/filemanager.php 

Заменяем 9ю строку 

protected $_smkfm_catalog = 'catalog';

на

protected $_smkfm_catalog = 'название вашей папки';

 

Пока ищу. как сделать. чтобы по дефолту грузилось в image каталог с правильным url изображения

Змінено користувачем s3ven
  • +1 1
Надіслати
Поділитися на інших сайтах


  • 1 year later...

А у меня получилось, выложу новый filemanager.php. Теперь при открытие стандартного менеджера изображений будет открывать сайт.рф/image/

Версия 2.3 опенкарт .

<?php
classControllerCommonFileManagerextendsController{protectedfunction translit($text){
		$rus = array("а","А","б","Б","в","В","г","Г","д","Д","е","Е","ё","Ё","є","Є","ж","Ж","з","З","и","И","і","І","ї","Ї","й","Й","к","К","л","Л","м","М","н","Н","о","О","п","П","р","Р","с","С","т","Т","у","У","ф","Ф","х","Х","ц","Ц","ч","Ч","ш","Ш","щ","Щ","ъ","Ъ","ы","Ы","ь","Ь","э","Э","ю","Ю","я","Я",'/',' ');
		$eng =array("a","A","b","B","v","V","g","G","d","D","e","E","e","E","e","E","zh","ZH","z","Z","i","I","i","I","yi","YI","j","J","k","K","l","L","m","M","n","N","o","O","p","P","r","R","s","S","t","T","u","U","f","F","h","H","c","C","ch","CH","sh","SH","sch","SCH","","","y","Y","","","e","E","ju","JU","ja","JA",'','');
		$text = strtolower(str_replace($rus,$eng,$text));
    $disallow_symbols = array(' '=>'-','\\'=>'-','/'=>'-',':'=>'-','*'=>'','?'=>'',','=>'','"'=>'','\''=>'','<'=>'','>'=>'','|'=>'');return trim(strip_tags(str_replace(array_keys($disallow_symbols), array_values($disallow_symbols), trim(html_entity_decode($text, ENT_QUOTES,'UTF-8')))),'-');}publicfunction index(){
		$this->load->language('common/filemanager');// Find which protocol to use to pass the full image link backif(isset($this->request->server['HTTPS'])&&(($this->request->server['HTTPS']=='on')||($this->request->server['HTTPS']=='1'))){
			$server = HTTPS_CATALOG;}else{
			$server = HTTP_CATALOG;}if(isset($this->request->get['filter_name'])){
			$filter_name = rtrim(str_replace(array('*','/'),'', $this->request->get['filter_name']),'/');}else{
			$filter_name =null;}// Save current directoryif(!isset($this->request->get['directory'])){if(!isset($this->request->get['parent'])){//New call Filemanager
				$this->request->get['directory']= isset($this->request->cookie['file_manager']['directory'])? $this->request->cookie['file_manager']['directory']:'';
				$this->request->get['page']= isset($this->request->cookie['file_manager']['page'])? $this->request->cookie['file_manager']['page']:1;}else{// Trying to go back to the root directory, delete cookies
				setcookie('file_manager[directory]','', time()-3600,'/', $this->request->server['HTTP_HOST']);
				setcookie('file_manager,'', time()-3600,'/', $this->request->server['HTTP_HOST']);}}else{
			setcookie('file_manager[directory]', $this->request->get['directory'], time()+60*60*24*30,'/', $this->request->server['HTTP_HOST']);
			setcookie('file_manager, isset($this->request->get['page'])? $this->request->get['page']:1, time()+60*60*24*30,'/', $this->request->server['HTTP_HOST']);}// Make sure we have the correct directoryif(isset($this->request->get['directory'])){
			$directory = rtrim(DIR_IMAGE .''. str_replace('*','', $this->request->get['directory']),'/');}else{
			$directory = DIR_IMAGE;}if(isset($this->request->get['page'])){
			$page = $this->request->get['page'];}else{
			$page =1;}

		$directories = array();
		$files = array();

		$data['images']= array();

		$this->load->model('tool/image');if(substr(str_replace('\\','/', realpath($directory).'/'. $filter_name),, strlen(DIR_IMAGE))== DIR_IMAGE){// Get directories
			$directories = glob($directory .'/'. $filter_name .'*', GLOB_ONLYDIR);if(!$directories){
				$directories = array();}// Get files
			$files = glob($directory .'/'. $filter_name .'*.{jpg,jpeg,png,gif,JPG,JPEG,PNG,GIF}', GLOB_BRACE);if(!$files){
				$files = array();}}// Merge directories and files
		$images = array_merge($directories, $files);// Get total number of files and directories
		$image_total = count($images);// Split the array based on current page number and max number of items per page of 10
		$images = array_splice($images,($page -1)*16,16);foreach($images as $image){
			$name = str_split(basename($image),14);if(is_dir($image)){
				$url ='';if(isset($this->request->get['cke'])){
          $url .='&cke='. $this->request->get['cke'];}if(isset($this->request->get['target'])){
					$url .='&target='. $this->request->get['target'];}if(isset($this->request->get['thumb'])){
					$url .='&thumb='. $this->request->get['thumb'];}

				$data['images'][]= array('thumb'=>'','name'=> implode(' ', $name),'type'=>'directory','path'=> utf8_substr($image, utf8_strlen(DIR_IMAGE)),'href'=> $this->url->link('common/filemanager','token='. $this->session->data['token'].'&directory='. urlencode(utf8_substr($image, utf8_strlen(DIR_IMAGE .''))). $url,true));} elseif (is_file($image)){
				$data['images'][]= array('thumb'=> $this->model_tool_image->resize(utf8_substr($image, utf8_strlen(DIR_IMAGE)),100,100),'name'=> implode(' ', $name),'type'=>'image','path'=> utf8_substr($image, utf8_strlen(DIR_IMAGE)),'href'=> $server .'image/'. utf8_substr($image, utf8_strlen(DIR_IMAGE)));}}

		$data['heading_title']= $this->language->get('heading_title');

		$data['text_no_results']= $this->language->get('text_no_results');
		$data['text_confirm']= $this->language->get('text_confirm');

		$data['entry_search']= $this->language->get('entry_search');
		$data['entry_folder']= $this->language->get('entry_folder');

		$data['button_parent']= $this->language->get('button_parent');
		$data['button_refresh']= $this->language->get('button_refresh');
		$data['button_upload']= $this->language->get('button_upload');
		$data['button_folder']= $this->language->get('button_folder');
		$data['button_delete']= $this->language->get('button_delete');
		$data['button_search']= $this->language->get('button_search');

		$data['token']= $this->session->data['token'];if(isset($this->request->get['directory'])){
			$data['directory']= urlencode($this->request->get['directory']);}else{
			$data['directory']='';}if(isset($this->request->get['filter_name'])){
			$data['filter_name']= $this->request->get['filter_name'];}else{
			$data['filter_name']='';}// Return the target ID for the file manager to set the valueif(isset($this->request->get['target'])){
			$data['target']= $this->request->get['target'];}else{
			$data['target']='';}// CKEditorif(isset($this->request->get['cke'])){
			$data['cke']= $this->request->get['cke'];}else{
			$data['cke']='';}// Return the thumbnail for the file manager to show a thumbnailif(isset($this->request->get['thumb'])){
			$data['thumb']= $this->request->get['thumb'];}else{
			$data['thumb']='';}// Parent
		$url ='&parent=parent';if(isset($this->request->get['directory'])){
			$pos = strrpos($this->request->get['directory'],'/');if($pos){
				$url .='&directory='. urlencode(substr($this->request->get['directory'],, $pos));}}if(isset($this->request->get['cke'])){
      $url .='&cke='. $this->request->get['cke'];}if(isset($this->request->get['target'])){
			$url .='&target='. $this->request->get['target'];}if(isset($this->request->get['thumb'])){
			$url .='&thumb='. $this->request->get['thumb'];}

		$data['parent']= $this->url->link('common/filemanager','token='. $this->session->data['token']. $url,true);// Refresh
		$url ='';if(isset($this->request->get['directory'])){
			$url .='&directory='. urlencode($this->request->get['directory']);}if(isset($this->request->get['cke'])){
      $url .='&cke='. $this->request->get['cke'];}if(isset($this->request->get['target'])){
			$url .='&target='. $this->request->get['target'];}if(isset($this->request->get['thumb'])){
			$url .='&thumb='. $this->request->get['thumb'];}

		$data['refresh']= $this->url->link('common/filemanager','token='. $this->session->data['token']. $url,true);

		$url ='';if(isset($this->request->get['directory'])){
			$url .='&directory='. urlencode(html_entity_decode($this->request->get['directory'], ENT_QUOTES,'UTF-8'));}if(isset($this->request->get['filter_name'])){
			$url .='&filter_name='. urlencode(html_entity_decode($this->request->get['filter_name'], ENT_QUOTES,'UTF-8'));}if(isset($this->request->get['cke'])){
      $url .='&cke='. $this->request->get['cke'];}if(isset($this->request->get['target'])){
			$url .='&target='. $this->request->get['target'];}if(isset($this->request->get['thumb'])){
			$url .='&thumb='. $this->request->get['thumb'];}

		$pagination =newPagination();
		$pagination->total = $image_total;
		$pagination->page = $page;
		$pagination->limit =16;
		$pagination->url = $this->url->link('common/filemanager','token='. $this->session->data['token']. $url .'&page={page}',true);

		$data['pagination']= $pagination->render();

		$this->response->setOutput($this->load->view('common/filemanager', $data));}publicfunction upload(){
		$this->load->language('common/filemanager');

		$json = array();// Check user has permissionif(!$this->user->hasPermission('modify','common/filemanager')){
			$json['error']= $this->language->get('error_permission');}// Make sure we have the correct directoryif(isset($this->request->get['directory'])){
			$directory = rtrim(DIR_IMAGE .''. $this->request->get['directory'],'/');}else{
			$directory = DIR_IMAGE;}// Check its a directoryif(!is_dir($directory)|| substr(str_replace('\\','/', realpath($directory)),, strlen(DIR_IMAGE))!= DIR_IMAGE){
			$json['error']= $this->language->get('error_directory');}if(!$json){// Check if multiple files are uploaded or just one
			$files = array();if(!empty($this->request->files['file']['name'])&& is_array($this->request->files['file']['name'])){foreach(array_keys($this->request->files['file']['name'])as $key){
					$files[]= array('name'=> $this->request->files['file']['name'][$key],'type'=> $this->request->files['file']['type'][$key],'tmp_name'=> $this->request->files['file']['tmp_name'][$key],'error'=> $this->request->files['file']['error'][$key],'size'=> $this->request->files['file']['size'][$key]);}}foreach($files as $file){if(is_file($file['tmp_name'])){// Sanitize the filename
					$filename = basename($this->translit(html_entity_decode($file['name'], ENT_QUOTES,'UTF-8')));// Validate the filename lengthif((utf8_strlen($filename)<3)||(utf8_strlen($filename)>255)){
						$json['error']= $this->language->get('error_filename');}// Allowed file extension types
					$allowed = array('jpg','jpeg','gif','png');if(!in_array(utf8_strtolower(utf8_substr(strrchr($filename,'.'),1)), $allowed)){
						$json['error']= $this->language->get('error_filetype');}// Allowed file mime types
					$allowed = array('image/jpeg','image/pjpeg','image/png','image/x-png','image/gif');if(!in_array($file['type'], $allowed)){
						$json['error']= $this->language->get('error_filetype');}// Return any upload errorif($file['error']!= UPLOAD_ERR_OK){
						$json['error']= $this->language->get('error_upload_'. $file['error']);}}else{
					$json['error']= $this->language->get('error_upload');}if(!$json){
					move_uploaded_file($file['tmp_name'], $directory .'/'. $filename);}}}if(!$json){
			$json['success']= $this->language->get('text_uploaded');}

		$this->response->addHeader('Content-Type: application/json');
		$this->response->setOutput(json_encode($json));}publicfunction folder(){
		$this->load->language('common/filemanager');

		$json = array();//Translit Folder Name
		$this->request->post['folder']= $this->translit($this->request->post['folder']);// Check user has permissionif(!$this->user->hasPermission('modify','common/filemanager')){
			$json['error']= $this->language->get('error_permission');}// Make sure we have the correct directoryif(isset($this->request->get['directory'])){
			$directory = rtrim(DIR_IMAGE .''. $this->request->get['directory'],'/');}else{
			$directory = DIR_IMAGE;}// Check its a directoryif(!is_dir($directory)|| substr(str_replace('\\','/', realpath($directory)),, strlen(DIR_IMAGE))!= DIR_IMAGE){
			$json['error']= $this->language->get('error_directory');}if($this->request->server['REQUEST_METHOD']=='POST'){// Sanitize the folder name
			$folder = basename(html_entity_decode($this->request->post['folder'], ENT_QUOTES,'UTF-8'));// Validate the filename lengthif((utf8_strlen($folder)<3)||(utf8_strlen($folder)>128)){
				$json['error']= $this->language->get('error_folder');}// Check if directory already exists or notif(is_dir($directory .'/'. $folder)){
				$json['error']= $this->language->get('error_exists');}}if(!isset($json['error'])){@mkdir($directory .'/'. $folder,0777);
			chmod($directory .'/'. $folder,0777);@touch($directory .'/'. $folder .'/'.'index.html');

			$json['success']= $this->language->get('text_directory');}

		$this->response->addHeader('Content-Type: application/json');
		$this->response->setOutput(json_encode($json));}publicfunctiondelete(){
		$this->load->language('common/filemanager');

		$json = array();// Check user has permissionif(!$this->user->hasPermission('modify','common/filemanager')){
			$json['error']= $this->language->get('error_permission');}if(isset($this->request->post['path'])){
			$paths = $this->request->post['path'];}else{
			$paths = array();}// Loop through each path to run validationsforeach($paths as $path){// Check path exsistsif($path == DIR_IMAGE || substr(str_replace('\\','/', realpath(DIR_IMAGE . $path)),, strlen(DIR_IMAGE))!= DIR_IMAGE){
				$json['error']= $this->language->get('error_delete');break;}}if(!$json){// Loop through each pathforeach($paths as $path){
				$path = rtrim(DIR_IMAGE . $path,'/');// If path is just a file delete itif(is_file($path)){@unlink($path);// If path is a directory beging deleting each file and sub folder} elseif (is_dir($path)){
					$files = array();// Make path into an array
					$path = array($path .'*');// While the path array is still populated keep looping throughwhile(count($path)!=){
						$next = array_shift($path);foreach(glob($next)as $file){// If directory add to path arrayif(is_dir($file)){
								$path[]= $file .'/*';}// Add the file to the files to be deleted array
							$files[]= $file;}}// Reverse sort the file array
					rsort($files);foreach($files as $file){// If file just deleteif(is_file($file)){@unlink($file);// If directory use the remove directory function} elseif (is_dir($file)){
							rmdir($file);}}}}

			$json['success']= $this->language->get('text_delete');}

		$this->response->addHeader('Content-Type: application/json');
		$this->response->setOutput(json_encode($json));}}

'

'

 

Надіслати
Поділитися на інших сайтах


  • 1 year later...

Другая проблема. Для сайта mysite.ru сделал тестовый test.mysite.ru
Так как картинок очень много - решил их не переносить, а заменить в конфигах


define('DIR_IMAGE', '/blabla/test.mysite.ru/image/');

на

define('DIR_IMAGE', '/blabla/mysite.ru/image/');

 

И не помогло.
На сайте картинки не видны, путь к ним остался с  test.mysite.ru. Притом когда чищу кэш изображений из админки - чистит  mysite.ru. В файловом менеджере ещё интереснее - структура каталогов из  mysite.ru, но сами картинки пытается загрузить из  test.mysite.ru

Плюнул, сделал ссылкой.
Но непонятно, зачем нужны все эти пути конфиге, когда их всё-равно изменить невозможно?

---------------------------------

Работает через ссылку нормально. Но в файловом менеджере - пусто

Змінено користувачем ironzorin2
Надіслати
Поділитися на інших сайтах


Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку

×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.