• Как сделать проверку на подменю в битрикс?

    @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 чтобы в шаблоне было как можно меньше логики, только вывод. В зависимости от кастомизированного компонента или стандартного битриксовского могут быть некоторые изменения, также до компонента и шаблона ваши свойства должны "доходить", что может потребуется настройки инфоблока/компонента посмотреть.
    Ответ написан
  • Стоит ли переходить с Sublime Text на Visual Studio Code?

    @Firsov36
    full-stack web developer
    Вопрос задан более года назад, а ситуация пока не изменилась. По-умолчанию все также пользуюсь Sublime, но иногда для разнообразия запускаю VS Code, приглядываюсь. Это все для быстрых заметок, правок и т.д., а если серьезные разработки, то тут только Phpstorm
    Ответ написан
    Комментировать
  • Как определить что класс подключился?

    @Firsov36
    full-stack web developer

    Поместил класс mailing в папку /local/php_interface/lib
    отрывок класса mailing


    Пишете, что подключили класс mailing, а в коде класса такого нет, но есть MailingTable

    class MailingTable extends Entity\DataManager

    К слову сказать, есть такой же класс от Битрикса. Вы пытаетесь переписать стандартный класс Битрикса? Классы начинаются с Большой буквы.

    Если уж пишите свой класс, то используйте свое пространство имен, зачем городить огород в чужом поле?

    Ну и отвечая на вопрос: "Как определить что класс подключился?"
    В php есть метод для проверки существования класса
    if (class_exists('MyClass')) {
        $myclass = new MyClass();
    }
    Ответ написан
    Комментировать
  • Как добавлять один и тот же товар в корзину, как новую позицию, а не добавлять в количество?

    @Firsov36
    full-stack web developer
    Ну видимо у вас реализованная логика так работает, что добавляется количество к "работа 1, работа 2" ...
    По сути, если я правильно понял, то у вас эти "работа1, работа2" они же "пошив, разрез"... пробовали не Комплектами, а Торговыми предложениями сделать? Например товар1 может быть красный, синий, белый... в то же время он из дерева, металла, пластика и примерно таким образом обыграть ваши "пошив, порез" и, например "разрез, выкройка, без услуг".
    Ответ написан
  • Как добавить плавности при открытии блока на JS?

    @Firsov36
    full-stack web developer
    Вы бы лучше фрагмент работающего кода с блоком выложили куда-нибудь на codepen, чтобы можно было изменить и показать вам. А так, можно замучиться объяснять.

    display:none - не работает с transition,
    можно использовать связку visibility и opacity (возможно добавить position: absolute чтобы не было белого поля, надо смотреть уже на месте)

    visibility: hidden;
    opacity: 0;
    transition: visibility 0s, opacity 0.5s linear;


    ну и соответственно в активном состоянии стили такие

    visibility: visible;
    opacity: 1;


    Решений такой задачи бегло штук 5-6 можно придумать. Можно побаловаться высотой блока и плавно анимацией выводить его из под заголовка. Но я бы лучше использовал вывод сверстанного блока с информацией из под блока с названием и прятал его там с помощью clip-path и анимацией опускал вниз.
    Ответ написан
    Комментировать
  • Как получить такой цвет через colormania пипеткой не выходит ЕСТЬ КОД. КАК?

    @Firsov36
    full-stack web developer
    Не понятно, чего вы хотите. Если хотите сделать чтобы слово "техника" было на таком же сером фоне как и iphone.. то тогда для "ссылки" с классом .technicsbtn поменять цвет фона и цвет текста. А для класса .technics-content2 можно вообще не использовать фон в таком варианте.

    Если вообще "техника" должно быть на белом, тогда убираем фон совсем.

    Если... в общем вариантов тьма. Что именно у вас не получается?

    Ответ написан
    Комментировать
  • Как вывести статус доставки в составе заказа в 1с битрикс?

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

    Как я поняла нужно переписывать класс Basket либо Shipment


    Точно не нужно.

    Вот накидал код, как получить текст статуса для отгрузок заказа

    $orderId = 57024;
    
    \Bitrix\Main\Loader::includeModule('sale');
    
    $order = \Bitrix\Sale\Order::load($orderId);
    $shipmentCollection = $order->getShipmentCollection();
    
    /** @var \Bitrix\Sale\Shipment $shipment */
    foreach ($shipmentCollection as $shipment) {
        if($shipment->isSystem()) {
            continue;
        }
        
        $statusCode = $shipment->getField('STATUS_ID');
        $statusLang = \Bitrix\Sale\StatusLangTable::getList(
            [
                'filter' => [
                    'ID' => $statusCode,
                    'LID' => LANGUAGE_ID
                ]
            ]
        )->fetchAll();
        
        var_dump($statusLang);
    }


    Результат выполнения
    array (size=1)
      0 => 
        array (size=4)
          'STATUS_ID' => string 'DN' (length=2)
          'LID' => string 'ru' (length=2)
          'NAME' => string 'Ожидает обработки' (length=33)
          'DESCRIPTION' => string 'Ожидает обработки' (length=33)
    Ответ написан
  • Как верстать такие степы в попапе?

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

    Ответ написан
    Комментировать
  • Как сделать такую анимацию текста на css?

    @Firsov36
    full-stack web developer
    html
    <div class="body">
      <div class="wrapper">
        <div class="background"></div>
        <div class="text">
          planedec50
        </div>
      </div>
    </div>


    scss
    .body {
      .wrapper {
        position: relative;
        padding: .5em;
        width: 50px;
        margin: 50px auto;
        overflow: hidden;
        border-bottom: 10px solid blue
      }
      
      .background {
        position: absolute;
        left:0;
        right:0;
        bottom:0;
        top:0;
        background: linear-gradient(90deg, rgba(255,255,255,1) 0%, rgba(255,255,255,0) 20%, rgba(255,255,255,0) 80%, rgba(255,255,255,1) 100%);
        z-index: 10;
      }
      
      .text {
        animation: action 1s linear alternate infinite;
      }
    }
    
    @keyframes action {
      100% {
        transform: translateX(-30px);    
      }
    }


    Ответ написан
    1 комментарий
  • Как в письмо с данными о заказе отправляемое покупателю добавить текстовый файл с данными о заказе?

    @Firsov36
    full-stack web developer
    Подписываемся на событие OnBeforeEventAdd
    (брал из очень старого рабочего кода, вырезая часть кода не для общего обозрения, но идея должна быть понятна)

    AddEventHandler("main", "OnBeforeEventAdd", array("NewOrderWithPdf", "OnBeforeEventAddHandler"));
    
    class NewOrderWithPdf
    {
        public function OnBeforeEventAddHandler($event, $lid, $arFields)
        {
            if ($event == "SALE_NEW_ORDER" && $arFields['ORDER_ID'] > 0) {
                $arrMailProps["EVENT_NAME"] = $event;
                $arrMailProps["LID"] = $lid;
                $arrMailProps["C_FIELDS"] = $arFields;
                $arrMailProps['FILE'] = [$pathToFile];
    
                \Bitrix\Main\Mail\Event::send($arrMailProps);
    
                return false;
            }
    
            return true;
        }
    }
    Ответ написан
    Комментировать
  • Как добавить статус заказа “Изменен"?

    @Firsov36
    full-stack web developer
    Что мешает просто в админке Битрикса, в таблице статусов (Админка - Магазин - Настройки - Статусы) создать новый статус со своим шаблоном письма? И проверяющий (админ, по вашему), после проверки заказа, изменения информации, добавления товаров и т.п., просто выставит этот статус для заказа? Система изменит статус заказа и автоматом отправил письма по прикрепленным к этому статусу шаблонам.

    А если далее нужно динамически менять данные в шаблоне письма, то цепляться к событию отправки письма при смене статуса, менять/изменять поля для письма, добавлять новые и использовать в письме.

    $eventManager->addEventHandler('sale', 'OnOrderStatusSendEmail', ['MyClass', 'onOrderStatusSendEmailHandler']);
    
    class MyClass
    {
        public function onOrderStatusSendEmailHandler($id, &$event, &$arFields, $val) {
            if($event == 'SALE_STATUS_CHANGED_NB') {
                //do something
                $arFields = [..fields..]
            }
        }
    }
    Ответ написан
    Комментировать
  • Невозможно войти в админку Битрикс, что делать?

    @Firsov36
    full-stack web developer
    Если уверены, что доступ у Вас имеется в админку Битрикса и чистка кеша не помогла, то стоит еще удалить Куки браузера относящиеся к сайту.
    Ответ написан
    Комментировать
  • Синтаксис описания тела письма в php?

    @Firsov36
    full-stack web developer
    $numele = isset($_POST["numele"]) ? $_POST["numele"] . $_POST["prenumele"] : '';
    $phone = isset($_POST["contact"]) ? $_POST["contact"] : '';
    $body = " оставил заявку: {$numele}\n
    его телефон: {$phone}";
    
    $mail->Body($body);
    $mail->addAttachment($file);
    Ответ написан
    6 комментариев
  • Правильный подход к разработке на Bitrix?

    @Firsov36
    full-stack web developer
    Просили советов, вот:

    Переходите на Phpstorm. Папку bitrix/ зачем в игнор? А как же подсказки IDE для написания кода? Как минимум bitrix/modules/, bitrix/component/, bitrix/js/ - я оставляю. Также код Битрикса много ответов дает не документированного API. Или пользоваться bitrix cli и генерить файл orm:annotation для подсказок.

    через git checkout обновляем боевой


    опечатка, прикалываетесь или серьезно так делаете? загрузить изменения на сайт это git pull, а checkout это переключиться на другую ветку и переключение на другую ветку не загружает новых данных. да и ветки иногда закрывать надо.

    Пробовали openserver, самостоятельную настройку windows, короче все на так работает.


    Тут скачайте образ для VMWare Player или VirtualBox (оба бесплатные), установите туда BitrixEnv поверх CentOs minimal и создавайте на базе этого виртуального сервера хоть десяток сайтов. Там их можно мучать как угодно, а снимки сервера позволяют все в считанные минуты вернуть назад, если очень обрушили даже не сайт, а сервер.

    Разрабатываете на виртуальном сервере в новой ветке репозитория (например issue-1). Тестируете на своем виртуальном сервере, потом завершаете разработку, мержите ветку issue-1 в production (или master) в рабочую и выгружаете на боевой сервер (или предбоевой). все ок? ветку issue-1 можно удалить.

    p.s. Начало вашего вопроса порадовало)))
    Ответ написан
    Комментировать
  • Как донастроить модуль СДЭК - Битрикс?

    @Firsov36
    full-stack web developer
    Вы можете эти поля оставить пустыми. Они используются для того, чтобы указать id блока, куда выводить информацию после выбора посетителем пункта самовывоза или постамата, в том случае, если вы написали собственный компонент оформления заказа. При стандартном компоненте, будут использоваться стандартные блоки и в этом случае поля оставлять пустыми.
    Ответ написан
    Комментировать
  • Как скрыть товар у которого картинка называется "000.jpg"?

    @Firsov36
    full-stack web developer
    Как скрыть товар у которого картинка называется «000.jpg»


    Вы спрашиваете про "товар", а код показываете компонента, которые выводит разделы Инфоблока

    $APPLICATION->IncludeComponent("bitrix:catalog.section.list")


    Но могу ответить на ваш вопрос.
    Первый способ: В настройках компонента каталога, раздела или элементов и т.д. (выбрать нужное) есть поле: "Имя массива со значениями фильтра"... вписываете название массива. Далее, перед компонентом определяете этот массив, который поможет отфильтровать выводимое.

    Второй способ: Копируете шаблон компонента к себе, добавляете файл result_modifier.php и перебирая массив $arResult, удаляете ненужные записи. Ссылка на документацию.
    Ответ написан
    Комментировать
  • Включить редактор страниц в Bitrix?

    @Firsov36
    full-stack web developer
    Нажмите на кнопку "Изменить страницу" (на иконку выше текста "изменить страницу") и появится редактор, в котором можно редактировать содержимое страницы.

    Или в админке битрикса Контент -> Структура сайта -> файлы и папки - нажать на три палочки напротив нужного файла и в меню выбрать "редактировать как html" или тест или php...

    А вообще, реально, вы что хотите добавиться то? Подробнее распишите свой вопрос.
    Ответ написан
    Комментировать