Автор Тема: Кастомные поля на странце заказа в админке  (Прочитано 1159 раз)

13 Август 2014, 10:40:48
  • Пользователь
  • **
  • Сообщений: 61
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
    • http://deutsch.opentran.net
Здравствуйте. Подскажите, пожалуйста, как в админке на детальной странице заказа добавить новое поле? При этом значения этого поля нужно вытащить, в истории заказов фронт офиса, и сделать к нему условие.
13 Август 2014, 10:52:54
Ответ #1
13 Август 2014, 11:01:26
Ответ #2
  • Модератор
  • Ветеран
  • *****
  • Сообщений: 33325
  • Репутация: +26771/-0
    • Просмотр профиля
Полно тем с такими проблемами.
Виктор, нужно отдельную тему создать в каком-нибуть разделе и прикрепить вверху, а то трудно найти на форуме все темы.

Цитировать
Схема добавления стандарная
1. Добавить новое поле в таблицу
2. Добавить новое поле в класс.
3. Добавить проверку и сохранение нового поля в контроллер.
4. Добавить новое поле в шаблон.
13 Август 2014, 11:08:22
Ответ #3
  • Пользователь
  • **
  • Сообщений: 61
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
    • http://deutsch.opentran.net
http://prestashop-forum.ru/index.php/topic,143.msg732.html#msg732
http://prestashop-forum.ru/index.php/topic,2804.msg14762.html#msg14762
http://prestashop-forum.ru/index.php/topic,919.0.html
http://prestashop-forum.ru/index.php/topic,151.msg644.html

Спасибо за темы. Для решения свой задачи нашел возможность упростить работу. В админке на детальной странице заказа уже есть поле "Способ оплаты". Как проще можно получить и проверить значение этого поля в фронт-офисе на странице "История заказов" клиента?
13 Август 2014, 11:17:17
Ответ #4
  • Модератор
  • Ветеран
  • *****
  • Сообщений: 33325
  • Репутация: +26771/-0
    • Просмотр профиля
Класс Order метод
/**
 * This method allows to get all Order Payment for the current order
 * @since 1.5.0.1
 * @return Collection of Order Payment
*/
public function getOrderPaymentCollection()
{
$order_payments = new Collection('OrderPayment');
$order_payments->where('order_reference', '=', $this->reference);
return $order_payments;
}
Нужно учесть, что может быть несколько методов оплаты.
13 Август 2014, 11:29:03
Ответ #5
  • Партнер
  • Ветеран
  • ****
  • Сообщений: 22816
  • Репутация: +17143/-1
  • Разработка веб-сайтов и веб-программирование
    • Просмотр профиля
Страница "История заказов" клиента.
Контроллер - MyAccountController.php
Шаблон - my-account.tpl
Лучший вариант, добавляете получение и проверку в контроллер.
Можно и в шаблоне
{foreach from=$order->getOrderPaymentCollection() item=payment}
    {if $payment->payment_method == "MyMethod"}
        ...
    {/if}
{/foreach}
Интернет-магазин под ключ.
Какой выбрать движок для интернет магазина ?
Какой движок лучше ?
Magento или Prestashop ?
Решение всех Ваших вопросов в создании Интернет-магазина.
13 Август 2014, 14:19:16
Ответ #6
  • Пользователь
  • **
  • Сообщений: 61
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
    • http://deutsch.opentran.net
Страница "История заказов" клиента.
Контроллер - MyAccountController.php
Шаблон - my-account.tpl
Лучший вариант, добавляете получение и проверку в контроллер.
Можно и в шаблоне
{foreach from=$order->getOrderPaymentCollection() item=payment}
    {if $payment->payment_method == "MyMethod"}
        ...
    {/if}
{/foreach}
Попробовал эту конструкцию, она почему-то у меня не срабатывает. Добавил в шаблон:

Цитировать
{foreach from=$order->getOrderPaymentCollection() item=payment}
    {if $payment->payment_method == "Оплата наличными при получении"}
        Проверено
    {/if}
{/foreach}

Но если просто вывести {$payment->payment_method} , то выводится "Оплата наличными при получении". Не понятно почему условие не срабатывает.
13 Август 2014, 14:42:09
Ответ #7
  • Модератор
  • Ветеран
  • *****
  • Сообщений: 33325
  • Репутация: +26771/-0
    • Просмотр профиля
$orderЗаказ правильно определен?
Выведите ид заказа и спавните с нужным.

Для сравнения лучше получить ид метода, но тогда это делать в контроллере.
13 Август 2014, 17:21:21
Ответ #8
  • Пользователь
  • **
  • Сообщений: 61
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
    • http://deutsch.opentran.net
$orderЗаказ правильно определен?
Выведите ид заказа и спавните с нужным.

Для сравнения лучше получить ид метода, но тогда это делать в контроллере.
Можете дать ссылку на пример с ид в контроллере?
13 Август 2014, 17:39:07
Ответ #9
  • Модератор
  • Ветеран
  • *****
  • Сообщений: 33325
  • Репутация: +26771/-0
    • Просмотр профиля
Базовый контроллер HistoryController
$orders = Order::getCustomerOrders($this->context->customer->id)