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

    @Firsov36
    full-stack web developer
    Используйте события на сохранения заказа или События компонента оформления заказа.

    Еще можно скрыть Адрес доставки или сделать его служебным, но в некоторых случаях это может привести к проблемам автоматических расчетов и неработоспособности отдельных сторонних модулей из маркетплейса.
    Ответ написан
    Комментировать
  • Как вывести разделы, подразделы и элементы в битрикс?

    @Firsov36
    full-stack web developer
    Можно выводить компонентом catalog, вырезав из шаблонов комплексного компонента все лишнее. Но это все-равно будет громоздко. Я бы написал свой комплексный компонент чисто под задачу с минимум логики и выводимой информации.
    Ответ написан
    Комментировать
  • Как получить все св-ва элементов в ORM используя runtime?

    @Firsov36
    full-stack web developer
    Вы массив свойств перезаписываете одним массивом.

    можно поправить, например так:

    while ($ob = $el_res->fetch()) {
        $props[$ob['PROP_ID']] = [
            'NAME' => $ob['PROP_NAME'],
            'CODE' => $ob['PROP_CODE'],
            'VALUE' => $ob['PROP_VALUE'],
        ];
        
        $arResult['ITEMS'][$ob['ID']] = [
            'ID' => $ob['ID'],
            'NAME' => $ob['NAME'],
            'PROPS' => $props
        ];
    }
    Ответ написан
    2 комментария
  • При отправке сообщения с формы, приходит спам! Как так?

    @Firsov36
    full-stack web developer
    Проверить шаблоны писем, проверить перехват почтовых событий. Установить и Запустить "Поиск троянов (bitrix.xscan)" (утилита от Битрикс для поиска троянов). Еще (маловероятно), но может на уровне сервера/хостинга подмена тела письма происходит.
    Ответ написан
  • Почему выскакивает ошибка mysql error при событии добавления пользоватлея в Битрикс?

    @Firsov36
    full-stack web developer
    Ошибку то надо полностью показывать. Просто «MySQL Query Error» мало о чем говорит. Либо вы часть текста об ошибке вырезали, либо из логов доставайте полный текст ошибки.

    Ну и да, вы меняете данные формы в событии и подставляете в создание нового пользователя. А после отработки события before есть и дальнейшие действия именно для формы. Определите массив данных для создания нового пользователя под другим именем.
    Ответ написан
    Комментировать
  • Нет раздела Скидки на товары в товарном маркетинге, почему?

    @Firsov36
    full-stack web developer
    Потому что новый механизм объединяет в себе функционал скидок для Инфоблоков, Каталога и Инет-магазина. Вот документация. Вторая картинка, где есть "Скидка на товар" это старая версия не конвертированная в новый формат.

    p.s. Не забудьте отметить вопрос решенным. Спасибо.
    Ответ написан
    Комментировать
  • Как исключить из выборки элементы?

    @Firsov36
    full-stack web developer
    При выборке использовать в фильтре конструкцию LOGIC => AND, где указать с отрицанием разделы по ID или по LEFT_MARGIN / RIGHT_MARGIN или в том же фильтре указать с отрицанием массив ID разделов. Вы приведите код, которым у вас не получается сделать выборку?

    Пример с LOGIC => OR

    $arrFilter[] = [
       "ACTIVE" => "Y",
       "LOGIC" => "OR",
       ["!SECTION_ID" => 345],
       ["!SECTION_ID" => 432]
     ];


    Документация по теме:
    getList() D7
    CIBlockElement::GetList() старого ядра
    Ответ написан
  • Как спрятать некоторые файла сайта на битрикс или все стили от pagespeed?

    @Firsov36
    full-stack web developer
    Код css это не обязательно "несколько файлов". Неиспользуемый и используемый код может быть и в одном файле. Гугль просит удалить именно неиспользуемый. Для этого надо проанализировать подключаемые стили на странице/страницах с помощью консоли браузера (инструменты разработчика) и вырезать из стилей неиспользуемый код. Также неиспользуемый код может быть и inline в html коде...
    Ответ написан
  • 1С-Битрикс, не получается редактировать «детальное описание», оно не кликабельно, как вернуть исходное состояние?

    @Firsov36
    full-stack web developer
    Не обязательно, что это вы сделали. Мог админ поле детального описания поменять на свойство элемента инфоблока. К тому же текст "Детальное описание" стал жирным, что значит обязательным к заполнению, что еще больше смахивает на то, что кто-то копался с настройками. Можно нажать на шестеренку и посмотреть, какие поля и свойства задействованы.
    Ответ написан
  • Один инфоблок использовать или несколько?

    @Firsov36
    full-stack web developer
    Я бы по-любому использовал три разных инфоблока. Во-первых это сейчас у вас один шаблон, все похоже и т.д. А потом один из «перечисленного» может обрасти функционалом (свойствами неповторяемыми, например) или иметь много записей или потребуется вынести в отдельную таблицу из общей и т.п.
    Ответ написан
    Комментировать
  • Ошибка 403 (Forbidden), как предоставить доступ к php файлу для ajax?

    @Firsov36
    full-stack web developer
    Разрабатывайте собственые модули в папке /local/modules, а не в папке /bitrix/modules.

    В файле ajax.php у вас скорее всего идет подключение ядра Битрикс, а доступ к чтению файла на уровне пользователей Битрикса не указали или в файле не установили константу, чтобы не проверять права (что не безопасно в ряде случаев).
    Ответ написан
    1 комментарий
  • Почему VueDevtools не видит Vuex?

    @Firsov36
    full-stack web developer
    На странице где подключается Vue/Vuex нужно определить константу VUEJS_DEBUG

    Пример:

    <?php
    
    const VUEJS_DEBUG = true;
    
    use Bitrix\Main\UI\Extension;
    
    /* @global CMain $APPLICATION */
    
    require($_SERVER["DOCUMENT_ROOT"] . "/bitrix/header.php");
    
    Extension::load("ui.vue");
    Extension::load('sergey.mymodule.isthebest');
    ?>
    <section>
        <div id="mymodule"></div>
        
        <script>
            BX.ready(function() {
              BX.Vue.create({
                el: '#mymodule',
                template: `<mymodule-isthebest />`
              })
            })
        </script>
    </section>
    
    <?php
    require($_SERVER["DOCUMENT_ROOT"] . "/bitrix/footer.php");
    Ответ написан
  • Как найти нужный css файл для изменения в битриксе?

    @Firsov36
    full-stack web developer
    Файлы стилей могут лежать в различных местах. При этом, если используется настройка использования минифицированных стилей и объединения стилей, то вы можете и не узнать путь. Что-то вроде, как вы написали "временный css" :)

    Подробнее о стилях для шаблонов сайта есть тут в документации. Также не пропустите ссылки статьи по теме в конце страницы.

    У компонентов могут быть свои дополнительные стили, путь к этим файлам такой же как путь до компонента, например /local/components/bitrix/adv/templates/.default/style.css
    Ответ написан
    Комментировать
  • Как вывести свойства товаров связанных "Привязкой к элементам" в Битрикс?

    @Firsov36
    full-stack web developer
    Вы при выборке не указываете поле свойства COLOR, поэтому и не будет его. Надо добавить к $arSelect что-то вроде "PROPERTY_COLOR". Также, основные поля получаете $arFields = $ob->GetFields(); а свойства нет, как-то так писалось: $arProps = $ob->GetProperties();

    Если отвечать про "кол-ва товара на складе", то в приведенном коде вы кол-во вообще не получаете, просто присваиваете значение из переменной $arResult['PRODUCT']['QUANTITY']. Если хотите получить для выбранного элемента инфоблока, то вам надо подгрузить модуль каталога и запрашивать данные оттуда.

    И начинайте уже изучать bitrix d7 используемые вами функции давно устарели.
    Ответ написан
  • Можно ли удалить дубли каталога на сайте битрикс?

    @Firsov36
    full-stack web developer
    Во-первых, старайтесь разработку вести на локальной копии, тогда любые "тесты" и собственные разработки/косяки не будут вредить основному работающему сайту.

    Во-вторых, можно и бэкап сделать, мало ли чего и как завязано и сделано другими...

    А по сути ответ на вопрос:
    - Можно спокойно удалить папки
    equipment1/
    quipment11052017/
    equipment-copy

    Все папки скорее всего копии основного каталога equipment/ созданные для теста. Там внутри наверное лишь index.php и .section.php файлы. Просто подключали компонент каталога, возможно с другим шаблоном.

    Также скорее всего есть правила для этих разделов в файле urlrewrite.php в корне сайта.
    Ответ написан
    Комментировать
  • Как сделать проверку на подменю в битрикс?

    @Firsov36
    full-stack web developer
    if($item["DEPTH_LEVEL"] > 1) { ... }
    Ответ написан
    Комментировать
  • Как в битриксе вывести блок меню на главной странице?

    @Firsov36
    full-stack web developer
    Скорее всего используется компонент 'catalog.section.list' с доработкой шаблона. Или можно написать свой компонент более простой в плане использования ресурсов и логики, тут же просто иконки у главных разделов, названия и ссылки.
    Ответ написан
    Комментировать
  • Почему может не отображаться запрос в строrе url?

    @Firsov36
    full-stack web developer
    Ваш код вырезан из контекста. Скорее всего, вы еще используете какой-то компонент. Вывод списка товаров/разделов с возможностью сортировки этого списка? Скорее всего в этом компоненте используется запись выбранной сортировки в $_SESSION или куках и значения используются оттуда, поэтому у вас

    но сортировка работает
    .

    И я не очень понял фразу

    Так вот, $APPLICATION->GetCurPageParam при его использовании по идее должно отображаться в url гет запрос но там пусто


    но если правильно понял то как-раз моя догадка ранее объясняет такое поведение: используются значения из запомненных ранее значениях в сесси/куках, но пустом гет-запросе.

    А Ваш код не корректно работает, потому как ошибка в использовании функции:

    $APPLICATION->GetCurPageParam("", array("?order"));


    Во втором параметре должен быть массив переменных для удаления. Переменной как "?order" не бывает, надо писать без "?", просто массив из ключей get запроса.

    Вот для теста можете попробовать. Создайте на сайте страничку и запустите, например site.ru/test.php?order=new и увидите, что за чехарда получается, если не правильно использовать параметры функции.

    <?php
    require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php");
    
    /**
     * @global CMain $APPLICATION
     */
    
    var_dump($APPLICATION->GetCurPageParam());
    var_dump($APPLICATION->GetCurPageParam("", ["?order"]));
    var_dump($APPLICATION->GetCurPageParam("", ["order"]));
    var_dump($APPLICATION->GetCurPageParam("order=new"));
    
    require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/epilog_after.php");
    Ответ написан
  • Как определенному свойству товара задать css класс?

    @Firsov36
    full-stack web developer
    `$value = value.style.font-weight == '600';` - что за язык программирования ?! :) Это некоторый микс из php+javascript(хотя написание тогда не верное)? ... так и не выйдет.

    Вам надо в коде шаблона компоненты найти кусок кода, где выводятся свойства товара. И там уже проверять/искать искомое свойство, а когда найдете, то подставлять или инлайн стиль font-weight или еще лучше класс стиля. сам класс стиля не забыть добавить в style.css

    К примеру, если приведенный вами код вырезан из правильного места из шаблона компонента, то в итоге получится примерно так:

    <?php
    foreach ($arResult['PROPERTIES'] as $code => $value) {
        if (in_array ($code, ELEMENT_PROPERTIES_SKIP) || empty($value['VALUE']))
        {
            continue;
        }                
        
        $class = $style = '';
        if ($code == 'PROP_INCOME') {
            $class = 'fb-600';
            $style = 'style="font-weight: 600;"';
        }
        ?>
            <div class="catalog-property <?=$class?>">
                <?=$value?>
            </div>
    
            or
    
            <div <?=($style??'')?>>
                <?=$value?>
            </div>
        <?php
    } 
    ?>


    Класс/стиль для свойства можно (а иногда и нужно) подготавливать не в шаблоне, а в файле result_modifier.php чтобы в шаблоне было как можно меньше логики, только вывод. В зависимости от кастомизированного компонента или стандартного битриксовского могут быть некоторые изменения, также до компонента и шаблона ваши свойства должны "доходить", что может потребуется настройки инфоблока/компонента посмотреть.
    Ответ написан