Есть стандартная форма добавления элементов в Инфоблок.
В ней есть возможность выбирать раздел инфоблока.
Проблема заключается в том, что разделов и подразделов слишком много и их неудобно искать прокручивая выпадающий список.
В настройках инфоблока есть нужный функционал - "Интерфейс привязки элемента к разделам: ВЫПАДАЮЩИЕ СПИСКИ"
т.е. при выборе раздела в первом списке во втором списке select можно выбрать его подразделы. Получается каскад выпадающих списков.
Но если добавлять элементы Инфоблока с публичной части при помощи компонента iblock.element.add.form такого не предусмотренно. Там получается все в одном списке.
За вывод списка разделов инфоблока отвечает как я понимаю следующий код.
а именно нижняя его часть между тегами select.
То есть любые свойства которые выводяться под кодом типа свойств инфоблока "L — Список" будут выводиться по данному коду.
Я не пойму вот что - как прописать каскад выпадающих списков в коде шаблона? Под каким кодом типа свойств инфоблока?
И вообще возможно ли вывести каскад выпадающих списков затронув только шаблон компонента.
В ней есть возможность выбирать раздел инфоблока.
Проблема заключается в том, что разделов и подразделов слишком много и их неудобно искать прокручивая выпадающий список.
В настройках инфоблока есть нужный функционал - "Интерфейс привязки элемента к разделам: ВЫПАДАЮЩИЕ СПИСКИ"
т.е. при выборе раздела в первом списке во втором списке select можно выбрать его подразделы. Получается каскад выпадающих списков.
Но если добавлять элементы Инфоблока с публичной части при помощи компонента iblock.element.add.form такого не предусмотренно. Там получается все в одном списке.
За вывод списка разделов инфоблока отвечает как я понимаю следующий код.
Код |
---|
case "L": if ($arResult["PROPERTY_LIST_FULL"][$propertyID]["LIST_TYPE"] == "C") $type = $arResult["PROPERTY_LIST_FULL"][$propertyID]["MULTIPLE"] == "Y" ? "checkbox" : "radio"; else $type = $arResult["PROPERTY_LIST_FULL"][$propertyID]["MULTIPLE"] == "Y" ? "multiselect" : "dropdown"; switch ($type): case "checkbox": case "radio": //echo "<pre>"; print_r($arResult["PROPERTY_LIST_FULL"][$propertyID]); echo "</pre>"; foreach ($arResult["PROPERTY_LIST_FULL"][$propertyID]["ENUM"] as $key => $arEnum) { $checked = false; if ($arParams["ID"] > 0 || count($arResult["ERRORS"]) > 0) { if (is_array($arResult["ELEMENT_PROPERTIES"][$propertyID])) { foreach ($arResult["ELEMENT_PROPERTIES"][$propertyID] as $arElEnum) { if ($arElEnum["VALUE"] == $key) {$checked = true; break;} } } } else { if ($arEnum["DEF"] == "Y") $checked = true; } ?> <input type="<?=$type?>" name="PROPERTY[<?=$propertyID?>]<?=$type == "checkbox" ? "[".$key."]" : ""?>" value="<?=$key?>" id="property_<?=$key?>"<?=$checked ? " checked=\"checked\"" : ""?> /><label for="property_<?=$key?>"><?=$arEnum["VALUE"]?></label><br /> <? } break; case "dropdown": case "multiselect": ?> <select name="PROPERTY[<?=$propertyID?>]<?=$type=="multiselect" ? "[]\" size=\"".$arResult["PROPERTY_LIST_FULL"][$propertyID]["ROW_COUNT"]."\" multiple=\"multiple" : ""?>"> <? if (intval($propertyID) > 0) $sKey = "ELEMENT_PROPERTIES"; else $sKey = "ELEMENT"; foreach ($arResult["PROPERTY_LIST_FULL"][$propertyID]["ENUM"] as $key => $arEnum) { $checked = false; if ($arParams["ID"] > 0 || count($arResult["ERRORS"]) > 0) { foreach ($arResult[$sKey][$propertyID] as $elKey => $arElEnum) { if ($key == $arElEnum["VALUE"]) {$checked = true; break;} } } else { if ($arEnum["DEF"] == "Y") $checked = true; } ?> <option value="<?=$key?>" <?=$checked ? " selected=\"selected\"" : ""?>><?=$arEnum["VALUE"]?></option> <? } ?> </select> |
То есть любые свойства которые выводяться под кодом типа свойств инфоблока "L — Список" будут выводиться по данному коду.
Я не пойму вот что - как прописать каскад выпадающих списков в коде шаблона? Под каким кодом типа свойств инфоблока?
И вообще возможно ли вывести каскад выпадающих списков затронув только шаблон компонента.
Создание сайтов в Саратове