И так сегодня очередному клиенту мне потребовалось делать возможность вывода фотографии товара в истории заказов покупателя, после все зарегистрированные клиенты смогут авторизоваться в своем кабинете и видеть все свои заказы вместе с фото самих же товаров, ну и собственно как это можно сделать я распишу подробно здесь.
Изменения будем вносить в следующие четыре файла а именно:
1 2 3 4 |
1. /catalog/controller/account/order.php 2. /catalog/model/account/order.php 3. /catalog/view/theme/ваша_тема/stylesheet/stylesheet.css 4. /catalog/view/theme/ваша_тема/template/account/order_info.tpl |
Ну что же приступим...
1. Открываем Файл /catalog/controller/account/order.php
Находим строки:
1 2 3 |
$this->data['products'] = array(); и $products = $this->model_account_order->getOrderProducts($this->request->get['order_id']); |
И между ними добавляем код:
1 |
$this->load->model('tool/image'); |
Далее ниже находим код:
1 |
$this->data['products'][] = array( |
И перед ним добавляем:
1 2 3 4 5 |
if (empty($product['image'])) { $thumb = ''; } else { $thumb = $this->model_tool_image->resize($product['image'], $this->config->get('config_image_category_width'), $this->config->get('config_image_category_height')); } |
Там же чуть ниже находим код:
1 |
'name' => $product['name'], |
и после него добавляем:
1 |
'thumb' => $thumb, |
2. Открываем Файл /catalog/model/account/order.php
В нем находим строку:
1 |
$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "order_product WHERE order_id = '" . (int)$order_id . "'"); |
И заменяем ее на:
1 |
$query = $this->db->query("SELECT op.*, p.image FROM `" . DB_PREFIX . "order_product` op LEFT JOIN `" . DB_PREFIX . "product` p ON (p.product_id = op.product_id) WHERE order_id = '" . (int)$order_id . "'"); |
3. Открываем Файл /catalog/view/theme/ваша_тема/stylesheet/stylesheet.css
И после кода (PS:в вашей теме может быть немного по другому):
1 2 3 4 |
table.list .center { text-align: center; padding: 7px; } |
добавляем пару строчек стилей:
1 2 3 4 |
table.list .left > img { float: left; } |
4. Открываем Файл /catalog/view/theme/ваша_тема/template/account/order_info.tpl
Находим следующий код:
1 |
<td class="left"><?php echo $product['name']; ?> |
И заменяем его на:
1 2 3 |
<td class="left"> <img src="<?php echo $product['thumb']; ?>" alt="<?php echo $product['name']; ?>" /> <?php echo $product['name']; ?> |
Там же примерно после кода:
1 |
<small> - <?php echo $option['name']; ?>: <?php echo $option['value']; ?></small> |
Находим:
1 |
<?php } ?></td> |
И заменяем его на следующий код:
1 2 |
<?php } ?> </td> |
Теперь у ваших пользователей есть возможность смотреть свои истории заказов вместе с фото заказанных товаров.
Ps: Если же вы желаете видеть меньшие размеры изображений а не те что предложенные выше то вы можете использовать вместо кода config_image_category_width следующий код config_image_additional_width
47 комментариев
Работает ли на OpenCart 2.1.0.1
На второй ветке не проверял, но по сути должно все работать.
Все сделал как написано. Не работает. Правда в 4м шаге в папке с моей темой нет такого файла, изменял в стандартной теме, может поэтому.
Данный метод уже применялся на многих шаблонах, и он работает, за исключением что есть разные шаблоны и возможно нужно чуток по другому вставлять коды, если потребуется помощь пишите поможем все дружно, ну или же можем предложить платную помощь!
Сделал все как вы указывали, все работает версия 2.0.1.1, спасибо очень понравилась доработка!
Я рад что смог вам помочь!
Opencart 2.1.0.1 в пункте 3) не могу найти указанный стиль.
Не обязательно искать в точности такой же стиль, в разных темах может быть он разный, просто вставьте указанный код Css в произвольном месте!
Стиль дэфолтный
осили. Благодарю. все ок. Этот метод применим и к админке, только у меня не получается сгенерировать правильный путь к картинке. Не могу найти где править контроллер.
Мне трудно сказать в чем может быть причина не видя что и как Вы делали, перепроверьте еще раз все пункты возможно что то упустили.
Как я уже писал Выше а так же и пользователи которые тестировали на второй ветке данный метод работает отлично,
Скорей всего Вы что то упустили, или Возможно у Вас немного измененный код, что бы что то ответить мне его нужно увидеть!
Notice: Undefined index: image in E:wampwwwandapmir_OC.2.1.0.1_clearadminviewtemplatesaleorder_info.tpl on line 162
Я пытаюсь добавить картинку не в карточку личного кабинета. А в карточку обработки заказа в админ панэле.
Метод по идее должен работать. т.к во вкладке для распечатки заказа фото получается отображать. Не хочет именно в Детали заказа добавляться
Хех, ну так это немного другое не совсем по указанной статье, Для своей задачи Возьмите за пример код из xml
https://web-ukraine.com/wp-content/uploads/2013/09/Image_in_Admin_Order.xml
Благодарен за наводку. Ваш метод подходит для добавления фото в Счет и Список доставки.
Рад что смог Вам помочь.
Если интересно могу сообщить о результатах.
Можете сообщить , возможно кому то будет еще полезен Ваш комментарий.
Добрый день!
Сделал как в описании, мой магазин Version 1.5.3.1 ничего не работает. Переправил 2-й раз перепроверил и результат тот же.
Версия 1.5.3.1 это старая версия , возможно там размещения кода немного по другому, но принцип такой же!
Какую ошибку видает? Пишите здесь будем разбираться! Просто у меня нет под рукой установленной выше версии.
Ну или можете связаться с нами через страницу контактов поможем!
Только что установил Вашу версию, в ней все точно так как по инструкции и все прекрастно работает! Скорей всего Вы или что то упустили или же у Вас сильно модифицырованный движок!
Ниже прикреплю Файлы которые только что правились можете сравнить их со своими!
Модифицированные файлы скачать.
Скрин версии 1.5.3.1 https://yadi.sk/i/Gf0aPmxh32E9qf
Здравствуйте! Архив уже недоступен. Я не совсем поняла последний шаг
Находим:
И заменяем его на следующий код:
то есть вы предлагаете сделать одно и тоже, тавтология. у меня почему-то вообще ничего не вывелось, хотя кеш модификаторов после изменений сохранила на версии оксторе 2.3
Ссылку на файл подправил, (хотя он к данной теме не относится).
Теперь по существу, не стоит тупо придерживаться всех пунктов, нужно смотреть код и сравнивать, ведь:
1. Статья написана для ветки opencart 1.5… у вас же вторая ветка 2.3
2. Статья написана на примере шаблона по умолчанию опять же ветки opencart 1.5…
Во второй ветке как минимум другой шаблон, другие пути и другие запросы к базе данных….
Марианна, Вашей версии 2.3 под рукой нет установленной к сожалению, но только что проверил на ocStore 2.1.0.2 и все отлично установилось и отображается , пример можете посмотреть на скрине http://prntscr.com/gy8rjq
Так же прикреплю файлы как есть которые только что правил, (PS: изменения пометил комментарием // фото в истории заказа) так что пробуйте и все получится!
Добрый день, а может знаете как прикрутить туда фильтр или поиск, чтобы находить нужный заказ по имени/телефону/e-mail?
В каком смысле поиск по по имени/телефону/e-mail? это же статья про список заказов одного и того же клиента, соответственно имя, телефон, емейл, одинаковые, или я вас не правильно понял,?
Возможно вы хотели сказать фильтр по заказам в админке, тогда да такое сделать можно , но нужно немного дописать кода, готового решения под рукой нету.
Нет, именно в личном кабинете пользователя. В нашем случае дропшипперы, у которых есть аккаунт у нас, создают заказ на конечного покупателя, то есь каждый заказ на другого клиента. Поэтому возникла необходимость сделать фильтр, так как стандартный функционал Opencart не предусматривает такого использования.
А… ну тут только индивидуальная доработка, вряд ли вы в интернет найдете что то похожее для таких целей.
Да вот ищу решение, думаю убрать пагинацию и сделать фильтры на JS, хотя насчет этого варианта сомневаюсь.
Ясно, ну пробуйте, я подобного не делал, не требовалось еще, по этому сказать что то конкретное не могу.
Но в любом случаю если делать фильтр то вам нужно будет выдергивать из базы данных именно адрес и контакты определенного заказа, так же скорей всего придется дополнительные поля в базе данных добавлять…
А можно выводить название-ссылку на товар в магазин?
Можно конечно же:
И в контролере в секцию:
После:
Добавить:
И там же ниже к примеру после total =>….:
‘return’ => $this->url->link(‘account/return/insert’, ‘order_id=’ . $order_info[‘order_id’] . ‘&product_id=’ . $product[‘product_id’], ‘SSL’)
Спасибо за быстрый ответ
Только вот пришлось вручную править ссылку, получилось так:
Возможно есть и более правильное решение…
Скажите, а можно ли вывести данные о товаре в самом списке заказов в профиле (не в карточке заказа)?
Например, его описание, фото, может быть, опции?
Вывести то все можно конечно, но так как таковой инструкции под рукой у меня нету для ваших целей.
Но сделать можно!
Был бы невероятно признателен, если бы Вы показали, куда рыть, хотя бы. Перепробовал множество способов, но ни один из них не сработал, знаний моих совершенно мало((
За заказы в кабинете пользователя у нас отвечают файлы:
catalog/controller/account/order.php
catalog/model/account/order.php
catalog/view/theme/default/template/account/order_list.tpl (список заказов)
catalog/view/theme/default/template/account/order_info.tpl (конкретный заказ)
Вот эти файлы и нужно править, возможно еще в зависимости от требуемых задач, придется создавать доп поля в базе данных.
Как я уже писал под рукой нету у меня инструкции именно под ваши цели, по этому могу предложить только на платной основе сделать так как вам нужно.
Или же пробуйте самостоятельно, если какие то стандартные значения то возьмите за основу файл order_info.tpl , там большинство значений уже выводятся.
Совсем забыл добавить, версия ОС 2.3.0.1
Решил собственными силами. Чуток схитрил, но визуально все выглядит, как и планировалось
А в чем хитрость заключалась, опишите возможно ваш комментарий кому то будет так же полезен!
Здравствуйте.
Установлен OC 3.0.2.0. Тоже хочу добавить картинку товара, но только в заказ в админку, подскажите пожалуйста как это сделать, а то тот код что выше не совсем подходит, в версиях 2 и 3 есть различия((
В версии OC 3.0.2.0 не просто отличия там кардинальные изменения, по этому конечно данное решение вам не подойдет, много чего изменять нужно.
Под рукой нет инструкции для вашей версии, так что только индивидуальная доработка.
не работает. ось 2.3.0.2
если кому надо, то для версии карты 2.3.0.2 код:
не верный!
вместо него пишем:
Спасибо
Спасибо вы помогли мне очень
Название то нужно правильно писать . Не в историю заказа, а в саму карточку заказа
С названием то как раз здесь все верно…