На одном проекте очень нужна была возможность менять порядок элементов в множественном свойстве типа "Привязка к элементам". К сожалению, по умолчанию Битрикс не умеет этого делать, только если руками копировать и вставлять элементы один за одним, что оооочень напряжно и долго.
Поэтому изучив возможные варианты было принято решение добавить кастомный скрипт, который бы позволял по нажатию клавиш вверх и вниз менять порядок (сортировку) элементов. Сделать это как оказалось не сложно. И так наши шаги:
1. Добавляем в папку /local/themes/ (или кому куда удобно) файлик JS следующего содержания
$(document).ready(function(){ // тут каждый меняет IDшник свойства под себя $("#tr_PROPERTY_15707 .adm-detail-content-cell-r > table tr td:not(:last)").each(function(){ $(this).append(' ↑ ↓'); }); // Обработчик нажатия стрелки вверх $(".sort_up").click(function(){ var current_tr = $(this).closest("tr"); // текущий tr var current_id = $(this).siblings('input[type=text]').attr("id"); // текущее значение input var up_tr = $(this).closest("tr").prev(); // предыдущий tr if(up_tr) { var up_id = up_tr.find('input[type=text]').attr("id"); // предыдущее значение input // меняем их значения current_tr.find('input[type=text]').attr("id", up_id).attr("name", up_id); up_tr.find('input[type=text]').attr("id", current_id).attr("name", current_id); current_tr.insertBefore(up_tr); // меняем местами } return false; }); // Обработчик нажатия клавиши вниз $(".sort_down").click(function(){ var current_tr = $(this).closest("tr"); // текущий tr var current_id = $(this).siblings('input[type=text]').attr("id"); // текущее значение input var down_tr = $(this).closest("tr").next(); // предыдущий tr if(down_tr) { var down_id = down_tr.find('input[type=text]').attr("id"); // предыдущее значение input // меняем их значения current_tr.find('input[type=text]').attr("id", down_id).attr("name", down_id); down_tr.find('input[type=text]').attr("id", current_id).attr("name", current_id); current_tr.insertAfter(down_tr); // меняем местами } return false; }); });
2. Теперь, чтобы его подключить к админке добавляем файлик /local/php_interface/admin_header.php следующего содержания:
use Bitrix\Main\Page\Asset; $Asset = Asset::getInstance(); CJSCore::Init(array("jquery")); $Asset->addJs('/local/themes/admin.js'); // наш JS // стили можно тоже подключить файлом, я не заморачивался ?>
И всё, после этого у вас должны появиться возможность управлять сортировкой элементов у множественных свойств. Надеюсь кому-нибудь пригодится)
Хостинг - FastVPS