Как расширить пикер товаров?

Как расширить шаблон \design\backend\templates\pickers\products\picker.tpl , а конкретнее \design\backend\templates\pickers\products\js.tpl , который подключается в пикере. Стоит задача сделать массовое удаление товаров, для этого надо добавить чекбоксы + кнопку. Это можно сделать через хук:
{hook name="product_picker:table_column_options"} {/hook}
правильно? только хук этот расположен в середине строки, получается я не смогу добавить свою колонку первой по порядку?

И еще вопрос такой - когда выводишь пикер, с типом table, выводится поле amount - для чего оно необходимо? Я понимаю что это количество - но что оно дает?) если у меня есть поле количество и действие “удалить товар”

Массовое удаление товаров из списка товаров?

как то да))
это не правильно? просто в списке есть пункт удалить)) я впервые работаю с пикером товаров, поэтому ознакамливаюсь и пишу сюда)

А чем стандартный функционал не удовлетворяет? В списке товаров прокликикаваем ненужные, они выделяются синим фоном, сверху появляется кнопка Действия, а в ней - удалить выбранные товары

хотят чтобы еще в модуле дополнительном, выводился список товаров по условиям и в этом списке чтобы можно было удалять товар, по сути продублировать стандартный функционал, но с меньшим набором действий в модуле

еще интересный момент в списке, который выводится с помощью {include file="pickers/products/picker.tpl" ... выводятся также товары, которые были удалены, только пишет вместо названия “удаленный товар” + кол-во у всех = 1, это кол-во товаров, которое по идее доступно я так понимаю? а 1 у всех, потому что параметр видимо не передается в список и везде выводится по умолчанию 1, верно мыслю?

Понятно. Сочувствую :slight_smile:
А через расширенный поиск получить такой отбор не получится? Чтобы поиск сохранить и пользоваться сохраненным поиском?

Это происходит скорее всего потому, что у вас сохранены уже в базе выбранные ранее product_ids, и они ссылаются на несуществующие товары. Конечно можно было бы сделать, что бы они автоматически проверялись и удалялись при загрузке, но сомнительная польза.

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

Похоже, что это осталось от старого добавления товаров в заказа при редактировании заказа

делаю свой пикер, на основе products - как заставить его использовать мой picker_contents.tpl вместо стандартного?

Через контроллер products.post.php перехватывайте запрос на picker и, если вы в админке )AREA == ‘A’), отдавайте свой picker_contents.tpl

app/controllers/common/products.post.php

1 лайк

а как получить текущий урл со всем гет и хэш параметрами?

В config должно быть

{$config.current_url}

или

Registry::get('config.current_url')

P.S. Возможно, нужно смотреть другой параметр в config

а как можно при аякс запросе подгружать при коллбэке шаблон tpl + инциализировать скрипты?
пробую вот так:

Tygh::$app['view']->display('addons/my_addon/views/test.tpl');
exit;

но, в test.tpl я хочу использовать jquery - как мне его подключить?
если я не ставлю exit; - тогда грузится главная страница сайта полностью, в самом верху получается мой кусок выводится, а ниже все остальное - отрисовка полностью страницы

в test.tpl мне необходимо выполнять свой js скрипт

впринципе я подключил jquery:

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js" data-no-defer></script>

а как подключить еще функции - мне необхим fn_url в js

Добавил еще такое:

<script src="/js/tygh/core.js" data-no-defer></script>
<script src="/js/tygh/ajax.js" data-no-defer></script>

между подключением jquery и моим скриптом, но при отправке аякса с помощью $.ceAjax кидает на несуществующую страницу

/index.php?dispatch=_no_page

хотя урл у меня указан fn_url('my_controller.callback_handler')

единственное что это вызывается из index.php?my_controller.callback

попробуйте на скрипты добавить class="cm-ajax-force"