Речь в статье пойдет о создании своего интерфейса для добавления товара в админке битрикса.
Обозначим основные моменты:
1) добавление кнопки
public static function initStartComplect()
{
return [
"BLOCKSET" => __METHOD__,
"getScripts" => [static::class, "initComplectScripts"],
];
}
public static function initComplectScripts($args)
{
Asset::getInstance()->addJs('https://cdnjs.cloudflare.com/ajax/libs/jquery/1.10.2/jquery.min.js');
$result = '
<скрипт>
setTimeout(function() {
$("[data-id=basket]").find(".adm-s-gray-title-btn-container").append("Добавить комплект");
}, 1000);
function addComplect(params)
{
var funcName = this.objName+\'.getParamsByProductId\';
window[funcName] = BX.proxy(function(params, iblockId){this.getParamsByProductId(params, iblockId);}, this);
var popup = new BX.CDialog({
content_url: \'/local/tools/comp_search_dialog.php?\'+
\'lang=\'+BX.Sale.Admin.OrderEditPage.languageId+
\'&LID=\'+BX.Sale.Admin.OrderEditPage.siteId+
\'&caller=order_edit\'+
\'&func_name=\'+funcName+
\'&STORE_FROM_ID=0\',
height: Math.max(500, window.innerHeight-400),
width: Math.max(800, window.innerWidth-400),
draggable: true,
resizable: true,
min_height: 500,
min_width: 800
});
BX.addCustomEvent(popup, \'onWindowRegister\', BX.defer(function(){
popup.Get().style.position = \'fixed\';
popup.Get().style.top = (parseInt(popup.Get().style.top) - BX.GetWindowScrollPos().scrollTop) + \'px\';
}));
popup.Show();
};
<скрипт>
';
return $result;
}
функция addComplect по сути дублирует стандартный вызов для добавления товара — за исключением что ссылаемся на свой скрипт в котором будет выбор товаров
2) Страница (скрипт) на котором будет расположена выборка выглядит примерно так
4) как передать товар из нашего списка обратно в заказ?
function selectProduct(productId, productName, iblockId, type) { BX.Sale.Admin.OrderBasketObj.getParamsByProductId( { full_quantity: "", id: productId, measure: "шт", measureRatio: "1", name: productName, quantity: "1", type: type, //4 - для ТП , 1 - для товаров }, iblockId ); return false; }
функцию вешаем на клик по товару к примеру и параметры соотвественно подтягиваем из него, остальная информация необходимая для добавление в корзину соберется сама.
Надеюсь это кому то пригодится.