Я делал что-то похожее, только для ювелирных украшений. http://prntscr.com/a0n7f0 У значения свойства есть два поля VALUE (само значение) и DESCRIPTION (описание значения). В VALUE делаете привязку к элементу инфоблока "Ингредиенты", а в DESCRIPTION - сериализованный массив ["TYPE":"ложка","CNT":10]. По такому свойству будет нормально работать поиск рецептов по ингредиентам. Перечень значений для списка TYPE можно сделать чтобы задавалось в SETTINGS свойства. В общем всё в ваших руках
Цитата
Алексей Тарасов написал: Такие вещи делают на трех инфоблоках. Ингредиент - Связующая таблица со свойствами рецепт, ингредиет, количество, размерность - Рецепт.
И потом контент-менеджер запарится всё это редактировать.
Алексей Тарасов написал: $toSend["PASSWORD"] = strlen(trim($arFields["CONFIRM_PASSWORD"]))>0?$arFields["CONFIRM_PASSWORD"]:$arFields["PASSWORD_CONFIRM"];
Что это за конструкция такая странная? Почему такая неуверенность в правильном ключе массива? Попахивает)
Цитата
Не на то событие привязываетесь.
Не важно на какое событие добавления юзера привязываться. Главное чтобы это было в процессе добавления пользователя, когда доступны все поля нового пользователя.
Долгополов Игорь написал: на событие OnOrderNewSendEmail вам нужно по id пользователя (не помню есть ли он в arFields, но по id заказа его точно можно получить) получить его логин и пароль
Пароль нигде не хранится в открытом виде. Так что костыль с OnBeforeUserAdd правильный. Только нужно отследить, где по пути значение пароля теряется.
Антон Соловьев написал: самый простой способ, делаешь колонку невидимой, а а для админов показываешь.
Код
<?$groupID = айди группы админов; # ID группы
if (in_array($groupID,$USER->GetUserGroupArray())){
?>
<st yle>
тут стиль зя колонки
</style>
<?
}
?>
Нужно вырезать контент из страницы, а не прятать его через стили. Иначе контент все равно будет доступен через вебинспектор например. Надо в условие if (in_array($groupID,$USER->GetUserGroupArray())) заключить сам блок результатов. Тогда контент результатов не будет доступен разного рода парсерам.
Может в админке статус товара устанавливается не через метод CSaleOrder::StatusOrder(), а какими-то обходными путями? Попробуйте установить статус заказа методом CSaleOrder::StatusOrder(), сработает обработчик?
ORDER_PROP_6 - вместо "6" подставьте ID свойства заказа в котором передается местоположение. $defaultLocationID - ID местоположения из профиля пользователя. PERSON_TYPE и PERSON_TYPE_OLD скорректируйте по ситуации. Проблема данного решения будет с приходом D7, когда нельзя будет подменить GET и POST параметры без ритуальных плясок с бубном.
Чтобы добавлять свои поля или изменять существующие в почтовых шаблонах можно не кастомизировать компонент (суровый путь), а создать обработчик события OnBeforeEventAdd или OnBeforeEventSend.