Автор Тема: Пожелания к товару (примечание)  (Прочитано 4003 раз)

06 Март 2013, 22:59:36
  • Новичок
  • *
  • Сообщений: 15
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Доброго дня.
Подскажите, пожалуйста, как можно реализовать такое на PrestaShop 1.3?

При заказе товара клиентам нужно оставлять своё сообщение о цвете товара.
Это достаточно реализовать с помощью обычного текстового сообщения (см. вложение).
Такое окно есть при заказе товара, но это для всего заказа, а нужно для каждого товара в отдельности.

Например:
1. на странице товара, клиент пишет какой ему нужен цвет
2. добавляет товар в корзину
3. сообщение с информацией приходит на почту менеджеру магазина
4. сообщение отображается в админ панели магазина
5. сообщение отображается в личном кабинете пользователя

Что-то подобное обсуждалось здесь: http://prestashop-forum.ru/index.php?topic=151.0

Пожалуйста, помогите, готов обсудить любые предложения.
06 Март 2013, 23:39:19
Ответ #1
  • Администратор
  • Ветеран
  • *****
  • Сообщений: 102503
  • Репутация: +34219/-0
    • Просмотр профиля
Как добавить дополнительное поле, уже обсуждали в той теме.
1. Добавить в таблицу содержащию номера заказов, ид товаров и сообщение.
2. Переопределить класс Order, добавить методы обработки дополнительного поля
3. Переопределить класс AdminOrders добавив вывод сообщения каждому товару в заказе
4.  Изменить шаблон product.tpl.
07 Март 2013, 01:16:50
Ответ #2
  • Новичок
  • *
  • Сообщений: 15
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Спасибо за ответ.

Я так понимаю, что:
п1 - уже есть, для сообщений существует таблица с данными.
п3 - также существует.
п4 - я вставил в product.tpl
Цитировать
<div id="ordermsg">
    <p>{l s='If you would like to add a comment about your order, please write it below.'}</p>
    <p class="textarea"><textarea cols="60" rows="3" name="message">{if isset($oldMessage)}{$oldMessage}{/if}</textarea></p>
</div>

п2 - неясно куда и как именно добавить следующие данные:
Цитировать
добавьте метод :
_updateMessage(Tools::getValue('message'));
в то место, где хотите показывать и сохранять сообщение покупателя.

Например, стандартный вариант :
order-address.tpl
это
OrderController->processAddress();


Я не программист, помогите, пожалуйста разобраться.
07 Март 2013, 12:28:13
Ответ #3
  • Партнер
  • Ветеран
  • ****
  • Сообщений: 22816
  • Репутация: +17143/-1
  • Разработка веб-сайтов и веб-программирование
    • Просмотр профиля
Цитировать
п1 - уже есть, для сообщений существует таблица с данными.
Нет. Для сообщений привязанных к каждому товару в заказе нет таблицы.
Есть поле Общий комментарий к заказу. Можно в него все сохранять. Тогда дополнительная таблица не нужна.
Цитировать
п3 - также существует.
Тоже самое что и выше.
Цитировать
п4 - я вставил в product.tpl
Это поле уже определно и используется в prestashop в order-address.tpl.
Так сообщения клиента не будут сохраняться.
Цитировать
п2 - неясно куда и как именно добавить следующие данные:
Если сообщения клиента нужно регистрировать сразу при добавлении товара в корзину, показывать эти сообщения и давать возможность редактировать, то менять нужно будет много:
/classes/Product.php
/classes/Cart.php
/classes/Order.php
/themes/prestashop/js/product.js
/themes/prestashop/js/order-opc.js
/themes/prestashop/js/cart-summary.js
Интернет-магазин под ключ.
Какой выбрать движок для интернет магазина ?
Какой движок лучше ?
Magento или Prestashop ?
Решение всех Ваших вопросов в создании Интернет-магазина.
07 Март 2013, 14:44:26
Ответ #4
  • Новичок
  • *
  • Сообщений: 15
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
похоже дело тёмное ...
Хорошо, если вы или кто-то может мне в этом помочь, готов обсудить цену вопроса.
11 Март 2013, 15:42:04
Ответ #5
  • Новичок
  • *
  • Сообщений: 15
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Хотел бы узнать, получится ли реализовать выше написанное?
11 Март 2013, 15:47:03
Ответ #6
  • Партнер
  • Ветеран
  • ****
  • Сообщений: 22816
  • Репутация: +17143/-1
  • Разработка веб-сайтов и веб-программирование
    • Просмотр профиля
Сделать такое можно. Написали, что нужно сделать.
Цитата: Виктор Демидов
1. Добавить в таблицу содержащию номера заказов, ид товаров и сообщение.
2. Переопределить класс Order, добавить методы обработки дополнительного поля
3. Переопределить класс AdminOrders добавив вывод сообщения каждому товару в заказе
4.  Изменить шаблон product.tpl.
Осталось в код перевести.
Интернет-магазин под ключ.
Какой выбрать движок для интернет магазина ?
Какой движок лучше ?
Magento или Prestashop ?
Решение всех Ваших вопросов в создании Интернет-магазина.
11 Март 2013, 19:50:47
Ответ #7
  • Новичок
  • *
  • Сообщений: 15
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Вот и я смотрю, что вроде бы всё ясно, но чего-то не хватает  8) ...

Пример окна сообщения http://www.babyart.ua/lang-ru/kostumi/4880--.html
Здесь как-то ведь реализовано? Не думаю, что здесь работал программист.
11 Март 2013, 21:39:32
Ответ #8
  • Ветеран
  • *****
  • Сообщений: 22125
  • Репутация: +25303/-1
  • Prestashop - просто и эффективно
    • Просмотр профиля
Цитата: mrsliding
Пример окна сообщения http://www.babyart.ua/lang-ru/kostumi/4880--.html
Здесь как-то ведь реализовано? Не думаю, что здесь работал программист.
Точно не программист. Тест не сохраняется, не возможно его исправить, в корзине его не видно и т.д.
Скорее всего это поле примечание к заказу перенесли со страницы заказа. Т.е. все замечания будут сохраняться в одном поле. Тогда это можно не делать. Клиент и так может написать пожелания на последнем этапе формления заказа.
Эксперт Prestashop - решения всех проблем, написание модулей, создание тем для интернет-магазинов под Prestashop.
Эксперт Magento - создам сайт на Magento, программирование кастомных модулей для Magento, кастомизация тем Magento.
Лучшие цены!!!
12 Март 2013, 12:46:03
Ответ #9
  • Новичок
  • *
  • Сообщений: 15
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Спасибо за тестирование.
Да действительно это сообщение нигде не выводится  :o тогда смысл в нём?

У меня тогда остаются два варианта:
1. Программирование (как написано выше)
2. Атрибуты и свойства

-----
1. Нашел где выводится текст этого сообщения - в названии заказа  :o
2. Атрибуты попробовал - рабочий вариант, посмотрю, подойдет ли он нам.

12 Март 2013, 12:58:30
Ответ #10
  • Новичок
  • *
  • Сообщений: 15
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Хорошо, если так, то тогда возникает вопрос:
какой код нужно вставить для написания и вывода сообщения?
куда - вроде бы понятно = на страницу товара и на страницу заказа.
12 Март 2013, 16:32:32
Ответ #11
  • Ветеран
  • *****
  • Сообщений: 33325
  • Репутация: +26771/-0
    • Просмотр профиля
Можно сделать оправку сообщения при заказе, как в форме контактов. Только сохраняться такие сообщения будут в переписке с клиентом.
<form action="{$link->getPageLink('order-detail', true)}" method="post" class="std" id="sendOrderMessage">
<h3>{l s='Примечание к заказу'}</h3>
<label for="id_product">{l s='Product'}</label>
<select name="id_product" style="width:300px;">
<option value="0">{l s='-- Choose --'}</option>
{foreach from=$products item=product name=products}
<option value="{$product.product_id}">{$product.product_name}</option>
{/foreach}
</select>
<textarea cols="67" rows="3" name="msgText"></textarea>
<input type="hidden" name="id_order" value="{$order->id|intval}" />
<input type="submit" class="button" name="submitMessage" value="{l s='Send'}"/>
</form>
18 Март 2013, 16:27:15
Ответ #12
  • Новичок
  • *
  • Сообщений: 15
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Сделав паузу и немного подумав решил сделать это с помощью поля "количество" (на странице с товаром).
Но, встал вопрос, как продублировать это поле, чтобы получилось два разных поля для ввода разных значений.
Может кто знает?

Я вот об этом коде, на странице товара:
<!-- quantity wanted -->
<p id="quantity_wanted_p"{if (!$allow_oosp && $product->quantity == 0) || $virtual} style="display:none;"{/if}>
<label>{l s='Quantity :'}</label>
<input type="text" name="qty" id="quantity_wanted" class="text" value="{if isset($quantityBackup)}{$quantityBackup|intval}{else}1{/if}" size="2" maxlength="3" />
</p>

я хочу его дублировать, а затем в дубликат вводить слово (например: цвет товара)

После заказа хочу сделать вывод этого слова (цвет товара) в детальном виде (история заказа)
Соответственно продублировав код вывода поля "колличество"
18 Март 2013, 16:50:59
Ответ #13
  • Партнер
  • Ветеран
  • ****
  • Сообщений: 22816
  • Репутация: +17143/-1
  • Разработка веб-сайтов и веб-программирование
    • Просмотр профиля
Цитировать
решил сделать это с помощью поля "количество"
Плохая идея, много работы не нужной делать придеться. Это поле не текстовое.
Есть текстовые поля сообщение от клиента, комментарии и т.д. на этих примерах нужно делать.
Интернет-магазин под ключ.
Какой выбрать движок для интернет магазина ?
Какой движок лучше ?
Magento или Prestashop ?
Решение всех Ваших вопросов в создании Интернет-магазина.
18 Март 2013, 17:02:55
Ответ #14
  • Новичок
  • *
  • Сообщений: 15
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Я так понимаю, что это всё же текстовое поле т.к. я смог туда написать слово.
По примеру "сообщение" и "комментарии" не могу делать т.к. для добавления текста нужна будет кнопка "отправить".

Я так понимаю, что для дублирования мне нужен идентификатор поля.