При этом мне не нужно, чтобы свойство попало в "DISPLAY_PROPERTIES"
Чтобы свойство не попадало в DISPLAY_PROPERTIES, не указывайте его в $arParams. Укажите любое другое свойство, этого будет достаточно для инициализации выборки свойств элементов инфоблока.
Александр Дио, если у Вас одна страница, тогда не следует использовать разделы в каталоге.
Создайте свойство товара "Категория" и добавьте его в фильтр.
garmon85, здесь уже ничего не поделать. Разбиение на страницы происходит на уровне выборки из базы данных. Туда Вы доступ не получите. Только если будете писать собственный компонент, что в данном случае не вариант.
Есть, конечно, возможность создать еще более изощренную надстройку. Добавить в каталог еще одно свойство, которое будет использоваться для сортировки. После получения массива $prod_ids, обновлять созданное свойство в товарах так, чтобы задать соответствующую сортировку. Но здесь нужно будет тщательно проработать систему кеширования, иначе каждый хит будет отбирать немало ресурсов системы.
AndTheEnd, безопасность -- понятие относительное.
Лично я почти все формы на Битрикс пишу самостоятельно. Думаю, с регистрацией можно поступить так же. Благо, во фреймворке есть подходящие методы.
Lorem Ipsum, я Вам рассказал, как не тратить время впустую.
У меня не было времени даже в ТП написать, не то что админские скрипты просматривать. Поэтому я решил задачу заменой типа поля и благополучно забыл о ней.
garmon85, у Вас есть отсортированный массив $prod_ids.
Его Вы передаете в шаблон через параметры компонента: "ELEMENT_ID_LIST" => $prod_ids
Теперь в файле result_modifier.php Вам будет доступен этот массив через переменную $arParams["ELEMENT_ID_LIST"]
Как сортировать? Очень просто.
1. Создаете временный массив $resultList = array()
2. Пробегаетесь в цикле по всем ID элементов из $arParams["ELEMENT_ID_LIST"]
3. Для каждого ID находите соответствующий элемент в $arResult["ITEMS"]
4. Добавляете найденный элемент в новый массив $resultList
5. Когда цикл будет окончен, выполняете замену: $arResult["ITEMS"] = $resultList;
Теперь в Вашем распоряжении будет тот же массив элементов, но уже отсортированный по Вашему шаблону. А главное, в самом шаблоне вывода не нужно ничего менять.
Денис Ковальчук, тогда костылим дальше.
1. В инфоблоке с товарами создаете множественное свойство типа Строка.
2. В настройках свойства отмечаете, что должно выводиться поле Описание.
3. Заполняете элементы каталога: в значении указываете цену, в описании -- размер.
4. Дошаманиваете шаблон вывода так, чтобы в блоке с ценами выводились значения Вашего нового свойства, но вместе с описаниями.
5. Открываете бутылку шампанского.
Денис Ковальчук, конечно можно. Воспользоваться тем же принципом и создать еще один инфоблок с конкретными размерами и конкретными ценами на каждый товар. В этих товарах сделать привязку к основному товару. А дальше "небольшая доля" шаманства с шаблонами вывода.
Александр Дио, нет, конечно. Потому что такой задачи в принципе нет.
Категории каталога -- это разделы сайта. У каждой есть свой URL. Нет необходимости размещать их в фильтре.
По шагам:
1. В шаблоне Умного фильтра формируете список разделов (название, адрес).
2. Добавляете в верстку умного фильтра select, в который передаете список разделов.
3. Пишете JS-скрипт, который по событию change Вашего select будет дописывать к адресу выбранного раздела параметры фильтра и выполнять редирект на сформированный адрес.
4. Дописываете функционал для показа в select текущего раздела.
Я имею ввиду, что мне нужно вывести контент из detail.php в index.php раздела
Еще раз: файл detail.php подключается только на детальной странице новости. Соответственно, код, написанный в detail.php, отработает только если Вы перейдете на детальную страницу новости. Не в раздел, не в список элементов. А именно на детальную страницу.
ragnar_ok, "перед" -- не нужно. Какое значение было ранее -- не важно. А вот после изменения значения вызываем CIBlockElement::GetProperty и проверяем, совпадает ли текущее значение с тем, которое Вы устанавливали.
Нет, не правильно.
Чтобы свойство не попадало в DISPLAY_PROPERTIES, не указывайте его в $arParams. Укажите любое другое свойство, этого будет достаточно для инициализации выборки свойств элементов инфоблока.
Правильная проверка:
где MY_PROPERTY -- символьный код свойства.