Перейти к содержанию
CaptainPower

Формирование пути и наименование файла изображения товара

Рекомендуемые сообщения

Знатокам, подскажите плиз..

По умолчанию ОП путь и имя до фото берет из поля image таблице product

однако в дальнейшем изображение кешуруется и путь меняется..

как на уровне всего приложения прописать путь от артикля товара т.е. типа $sku.'jpg' - наименование файла товара

где бы это подправить, чтобы данное исправление действовало на все модули ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1. admin/model/tool/image.php - модель для ресайзинга картинок

2. admin/controller/common/filemanager.php - контроллер файл менеджера, смотрите метод upload

первый вариант более универсальный, так как его используют почти все модули, там формируется название картинки + ширина_х_высота

но этот метод ничего не знает о товаре, то есть нужно как-то получить сам товар, достать оттуда все что нужно (sku, model итд) и сформировать название

  • +1 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

спасибо за подсказку но решил сделать всетаки в контроллерах :

$filename=$product_info['model'].'.jpg';

if  (!file_exists(DIR_IMAGE. $filename) || !is_file(DIR_IMAGE . $filename))  {
$image =$this->model_tool_image->resize('no-image.png', $setting['image_width'], $setting['image_height']);
} else {
$image =$this->model_tool_image->resize($filename, $setting['image_width'], $setting['image_height']);

}

для контролера товара:

$filename=$product_info['model'].'.jpg';

if  (!file_exists(DIR_IMAGE.'/data/foto/'. $filename) || !is_file(DIR_IMAGE.'/data/foto/' . $filename))  {
$this->data['thumb'] =$this->model_tool_image->resize('no-image.png', $this->config->get('config_image_thumb_width'), $this->config->get('config_image_thumb_height'));
} else {
$this->data['thumb']=$this->model_tool_image->resize($filename, $this->config->get('config_image_thumb_width'), $this->config->get('config_image_thumb_height'));

$this->data['popup'] = $this->model_tool_image->resize($filename, $this->config->get('config_image_popup_width'), $this->config->get('config_image_popup_height'));

}

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

дело конечно ваше, но этот код вам придется копировать во ВСЕ контроллеры всех модулей, как модулей самого опенкарта так и сторонних.. причем как тех, что уже установлены так и всех что будут установлены в будущем..

я же предлагал более универсальное решение, поменять код в 1 месте и эти изменения бы повлияли на все модули.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

еще вариант в голову пришел пока писал предыдущее сообщение, самый наверное правильный - сделать все через крон. Написать скрипт, который будет обходить всю базу и заменять названия картинок как в базе так и название файлов согласно каким-то правилам.

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.