Ответы пользователя по тегу 1С-Битрикс
  • Как выводить элементы в определенном порядке?

    @iitovka
    Можно написать обработчик добавления-редактирования элемента, и там обработку свою писать и поле SORT у элемента по нужному принципу менять. (либо вообще не поле SORT, а отдельное свойство/свойства, и включать сортировку по этому свойству)
    Ответ написан
  • Почему при авторизации администратора в Битрикс первый раз за день возникает 504 ошибка?

    @iitovka
    можно смотреть в init.php, нет ли ничего.

    Но очень может быть, что агенты тут выполняться начинают, если агенты на хитах выполняются. Поставьте выполнение агентов на крон, и сравните, есть ли косяк.
    Плюс раз ошибка есть, смотрите логи сервера, что в этот момент за запросы происходят
    Ответ написан
    1 комментарий
  • Создание интернет магазинов на bitrix. Опытные разработчики, какие верные пути глубокого изучения bitix Вы можеет предложить?

    @iitovka
    Уходите от старого ядра, пишите все на d7.
    По d7 к сожалению инфы еще мало, но все таки кое-что есть в документации,
    вот эти страницы у меня всегда в закладках
    https://mrcappuccino.ru/blog/post/work-with-basket...
    https://mrcappuccino.ru/blog/post/work-with-order-...

    Пару лет успешно натягивала компонент order.ajax на нужную верстку, в этом году терпения уже не хватает, теперь заказы делаем чисто на api. корзину тоже уже часто делаю на api.
    компонент типа новости - пока не делаем свой, только потому что не решили, как кешировать данные. А так вообще ничего плохого, что не пользуетесь компонентами, не всегда они являются более лучшим решением. С умным фильтром бы еще чего придумать...

    Вообще более серьезные проекты используют битрикс только для админки, публичная часть делается какими-нибудь фреймворками и апи битрикса. Так что могу только порекомендовать стремиться к этому.
    Про нагрузки - у битрикс есть курсик про это. Рекомендации по настройкам nginx и mysql причем не плохие (хотя тесты в админке что вычисляют - не совсем согласны).
    Ответ написан
    6 комментариев
  • Как принудительно запустить обмен в Битрикс, имея необходимые файлы?

    @iitovka
    1) если вручную просто, то
    положить файлы в папку /upload/1c_catalog/
    запустить под админом урл сайта
    /bitrix/admin/1c_exchange.php?type=catalog&mode=import&filename=import.xml
    и обновлять страницу пока не получите success - импорт звершен
    и так каждый файл

    2) если программно и автоматически, то надо обеспечить, что файлы в эта папку заливались.
    а потом скриптиком curl запросы делать для выполнения того же, что выше, только передавая авторизацию
    Ответ написан
    Комментировать
  • Почему не работает ЧПУ?

    @iitovka
    в файле urlrewrite.php есть правило для раздела katalog ?
    Ответ написан
    Комментировать
  • Как сделать акцию в битриксе 3 товара по цене 2?

    @iitovka
    в смысле один и тот же товар, если штук 3 - то цена как для двух?
    1) в переводе на математический язык: если кол-во 3 штуки, то скидка на товар - 33,33%.
    такое правило стандартными скидками можно задать
    2) если все таки еще какие то условия, или если товаров больше чем 3 штуки, и поведение стандартной скидки не то, что ожидаете, то я использовала бы
    $eventManager->addEventHandler('sale', 'OnBasketUpdate', function($ID, $arItem){})
    внутри этого обработчика получаем корзину текущего пользователя, в корзине находим нужный товар, смотрим его колво, и если надо - проставляем кастомную цену, если нет - то возвращаем оптимальную цену товара для группы этого пользователя.
    у меня только такое событие отработала как надо.
    (сичтали скидки на комплекты, если в корзине есть например и шапка и шарф и варежки - то всем скидка, если 2 шарфа - то скидка только на один из них, так как второй уже не комплект. но цена идет на позицию корзины)
    Ответ написан
  • Как забрать количество товаров, просмотренные пользователем?

    @iitovka
    Запросом к БД, таблица b_catalog_viewed_product
    global $DB;
    $results = $DB->Query("select count(PRODUCT_ID) as count from b_catalog_viewed_product where DATE_VISIT>'".date('Y-m-d 00:00:00')."' and FUSER_ID = '".$_REQUEST['id']."'");
    Ответ написан
  • Как создать кастомный тип свойства инфоблока?

    @iitovka
    1) т.к. у вас несколько полей, то они не могут иметь одинаковый name. надо каждому задать

    name="'.$strHTMLControlName["VALUE"].'[1]"
    name="'.$strHTMLControlName["VALUE"].'[2]"
    name="'.$strHTMLControlName["VALUE"].'[3]"

    2) Базовый тип вашего свойства - строка. поэтому сохранение значения в базу происходит просто как строка. файл никуда из формы не сохраняется и никак не обрабатывается.
    Сохранение в базу вы должны написать сами вот тут
    function ConvertToDB($arProperty, $value){
    return $value;
    }

    например, из поля $value['VALUE'][2] - у вас будет картинка. ее сначала надо будет сохранить, можно средствами же битрикса, чтобы файл был записан в таблицу b_file, и у вас только id файла осталась, и уже это id записывать в значение кастомного свойства.

    С полями типа файл кастомные свойства не делала, но вот пример сохранения строка+селект с множественным выбором+строка

    function ConvertToDB($arProperty, $value) {
    if(!$value['VALUE'][1]) return false;
    $value['VALUE'][2]= implode('+', $value['VALUE'][2]);
    $value['VALUE']= implode('||', $value['VALUE']);
    return $value;
    }

    т.е. тут еще проверяю, если первый input не заполнен, то свойство не сохраняется.
    само значение в итоге записано из массивов в строки. можно также сделать сериализацию.

    а в ConvertFromDB - все обратно разбирать.
    Ответ написан
    Комментировать
  • Bitrix компонент поиска, замена вводимых слов?

    @iitovka
    1) Либо компонент кастомизировать, и перед выборкой getlist добавлять в свои дополнительные параметры в фильтр, либо в шаблоне компонента, если результат пуст, то снова подключать компонент со своим фильтре, в зависимости от поисковой фразы. лучше 1, т.к. так все сразу будет найдено.
    2) для керпич/кирпич использую сервис от яндекса - https://tech.yandex.ru/speller/
    т.к. я кастомизировала компонент, то просто поисковый запрос проверяю и добавляю в фильтр через LOGIC->OR.
    код запроса

    function yaapi($url, $params) {
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
    curl_setopt($ch, CURLOPT_HEADER, false);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
    curl_setopt($ch, CURLOPT_IPRESOLVE, CURLOPT_IPRESOLVE_V4);
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_REFERER, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($params));
    $result = curl_exec($ch);
    curl_close($ch);
    return $result;
    }
    $result = json_decode(yaapi('speller.yandex.net/services/spellservice.json/checkText', array('text'=>$arrFilter['?NAME'])), true);
    $arrFilter['?NAME'] - поисковый запрос пользователя
    Ответ написан
    Комментировать