Да он вобще у меня пуст т.е. никаких даже похожестей содержания элементов массива $arFields["IBLOCK_SECTION"][0]. $arFields["IBLOCK_SECTION"] - без массивности. пустой причём. Даже в обновлений не отдаёт массивность.
Создание нового альбома при создании новой страницы или раздела
Ну смотрите вы делаете доп. свойство в фильтре по вашему полю, потом отлавливаете его в result_modifier. Удаляете его отображение. Смотрите что пришло в arresult - а именно не пришёл ли уже сабмит формы. Если пришёл находим уровень вложенности элементов. Опрделяем сколько строить select' ов для отображения. Определяем родительский уровень. Собираем все родительские уровни начиная с корня. Т.е. 1. Вытаскиваем сначала всех родителей. 2. Определям нужен ли нам ещё один уровень если да то забираем второй уровень выбранного или ничего для других. 3. По дефолту наш скрытый псевдо селект будет пустым. 4. При изменение первого уровня подгружаем следущий уровень и обновляем скрытий селект новым значением и т.д. по вложенности элементов.
По поводу ajax - я делаю вопреки битрикса ибо привык с нормальным ajax без всяких сбросов кеша страниц и всякий дребутиски которая не всегда работает. По - этому пользуюсь исключительно Get - запросом. Post поистене творит неимоверные действия такие как Загрузка всей страницы в окне корзины. Пример:
[CODE]$(document).ready(function(){ $('.basketAdd').click(function(){ $.get("/AjaxSender.php", {itemID : this.getAttribute('id'), send:'add', mode:'ajax'}, function(data){ alert('Сервер сказал'+data); } ); return false; }); });[/CODE] В корне собственно сам AjaxSender.php [CODE]<? require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php"); if (isset($_SERVER['HTTP_X_REQUESTED_WITH']) && $_SERVER['HTTP_X_REQUESTED_WITH']==='XMLHttpRequest'){ if($_REQUEST['mode'] == 'ajax'){ $APPLICATION->RestartBuffer(); //... необходимымые манипуляйии с данными. echo "и то чт о мы вернём клиенту."; die(); } } else LocalRedirect("/"); ?> [/CODE]
Может я чего непониманию, я вижу решение этой задачи таким(Сразу говорю решение на вскидку) 1. Создаем отдельный инфоблок в котором строем нашу структуру (с разными уровнями вложенности и т.д.) 2. Добавляем новое свойство в элемент - оно у нас будет одно будем его считать конечным. 3. Берем стандартный фильтр - ставим на него всего одно поле для фильтрации по свойству привязки. 4. В резалт модифиер манипулируем section - Ajax- ом. Подгружая необходимые данные и добавляя и удаляя section для выборки до того как будет нажат сабмит. Ключевое свойство для фильтрации будет самым последний section(а лучше вобще его спрятать в input).
Баг при добавление элемента OnAfterIBlockElementAdd
Здравствуйте встретил баг, проявляется когда загружаешь через импорт данные.Отлавливаю OnAfterIBlockElementAdd вывожу данные в итоге вижу что IBLOCK_SECTION_ID отсутствует. На самом деле он существует и если посмотреть в секцию этот элемент действительно добавлен в секцию. Так куда же девается IBLOCK_SECTION_ID ? [CODE]Array( [ID] => 2416 [~ID] => 2416 [TIMESTAMP_X] => 29.01.2012 21:11:41 [~TIMESTAMP_X] => 29.01.2012 21:11:41 [TIMESTAMP_X_UNIX] => 1327857101 [~TIMESTAMP_X_UNIX] => 1327857101 [MODIFIED_BY] => 1 [~MODIFIED_BY] => 1 [DATE_CREATE] => 29.01.2012 21:11:41 [~DATE_CREATE] => 29.01.2012 21:11:41 [DATE_CREATE_UNIX] => 1327857101 [~DATE_CREATE_UNIX] => 1327857101 [CREATED_BY] => 1 [~CREATED_BY] => 1 [IBLOCK_ID] => 11 [~IBLOCK_ID] => 11
[IBLOCK_SECTION_ID] => ГДЕ ОН ? [~IBLOCK_SECTION_ID] => ГДЕ ОН ? [ACTIVE] => Y [~ACTIVE] => Y [ACTIVE_FROM] => [~ACTIVE_FROM] => [ACTIVE_TO] => [~ACTIVE_TO] =>
)[/CODE] [B]Сам код в init.php[/B]
[CODE] function ElementAddHandler(&$arFields){ [/CODE][CODE]echo "<pre>"; print_r($arFields); echo "</pre>"; exit(); } [/CODE]Через обычное добавление ( не важно админка это или публичная всё нормально). Проявляется исключительно при импорте данных через CSV файл в любой инфоблок. При этом в секция к примеру [B]Наши баги[/B] существует в инфоблоке. Сюда же [B]OnBeforeIBlockElementUpdate[/B] та же ошибка!Сюда же [B]OnBeforeIBlockElementAdd [/B]та же ошибка!
Получается что отловить ID секции элемента нельзя. А это очень печально, хотя в $arFields переменная IBLOCK_SECTION_ID существует но пустая.