Добрый день! Столкнулся проблемой. Как получить данные $order_info на странице order.manage?
Там этот массив просто называется $o
Речь идет о странице админки ?dispatch=orders.manage ?
Да. Мне нужно оттуда взять значение payment_id и поставить условие. Хочу вывести суммы по методам оплаты. Как внизу страницы
На странице ?dispatch=orders.manage нет такой переменной. И внутри него не видно массивов
Есть, только что проверил. В файле
/design/backend/templates/views/orders/manage.tpl
Но вот только информации payment_id в этом массиве нет
Извиняюсь, оказывается есть.
Надо в своём модуле пост контроллер к контроллеру order, мод manage, и для каждого заказа в массиве orders получить нужную информацию и прицепить к массиву
Ровно также делал, когда понадобилось больше инфы выводить на списке
Вас понял. Попробую найти информацию и прицепить его к $order
Если что, через час буду за компом, смогу скинуть
Спасибо)
Как вариант - использовать хук pre_get_orders (app/functions/fn.cart.php) и расширить массив $fields, добавив туда payment_id
Мне тогда долго думать некогда было, поэтому сделал по-быстрому
/app/addons/имя_модуля/controllers/backend/orders.post.php
<php
if ($mode == 'manage') {
$orders = Tygh::$app['view']->getTemplateVars('orders');
foreach ($orders as &$order) {
$order['order_info'] = fn_get_order_info($order['order_id']);
$order['order_info']['amount'] = 0;
foreach ($order['order_info']['products'] as &$p) {
$order['order_info']['amount'] += $p['amount'];
$p['image'] = fn_get_image_pairs($p['product_id'], 'product', 'M');
}
}
Tygh::$app['view']->assign('orders', $orders);
}
мне нужны были способ оплаты и доставки, количество товаров в заказе, изображения товаров и еще кое-какая мелочь
Всем спасибо! Попробую достать сначало order_info потом данные с sales_reports
Если будете выводить по 250 заказов на страницу, может подтормаживать. Лучше использовать hook, если речь только про поле payment_id
-
Включите модуль my_changes (Мои изменения) - если модуль не включен
-
Создайте файл init.php в директории /app/addons/my_changes/init.php
<?php
if (!defined('BOOTSTRAP')) { die('Access denied'); }
fn_register_hooks(
'pre_get_orders'
);
!Не тестировано
- Создайте файл func.php в директории /app/addons/my_changes/func.php
<?php
if (!defined('BOOTSTRAP')) { die('Access denied'); }
function fn_my_changes_pre_get_orders($params, &$fields, $sortings, $get_totals, $lang_code)
{
$fields[] = '?:orders.payment_id';
}
Спасибо за ответ! Попробую.
Решение превосходное. Получил все данные с order_info. Спасибо большое!
На самом деле всё зависит от данных, которые нужны. если пару полей из уже включенных в запрос таблиц - правильней через хук. Если подключать другие таблицы - вот тут как раз может наступить попа именно если через хук делать. В пост контроллере мы работаем уже только с отобранными для страницы заказами, и проверено, разницы в скорости почти нет. Конечно, пробовал сначала через хук, но так как нужны были главные изображения товаров из заказа - вот тут тормоза и наступали.
А что делать если у них будут одинаковые массивы. Например и в order_info есть image и на order. Можно ли их как то сортировать и удалить не нужные массивы?
Можно попробовать вместо
$order['order_info'] = fn_get_order_info($order['order_id']);
поставить
$order = fn_get_order_info($order['order_id']);
но не проверял что будет, хотя должно работать, и по идее, это правильнее