Ответы пользователя по тегу 1С-Битрикс
  • Почему CSalePaySystemAction::GetParamValue не работает в helper.php?

    @ZardoZAntony
    программист, сис. админ
    Что интересно CSalePaySystemAction::GetParamValue у меня и в payment.php пустоту возвращал. Но зато там был $arResult, откуда я всё нужное и достал.
    А на другом сайте нет $arResult, но зато работает CSalePaySystemAction::GetParamValue. Чудны дела твои битрикс ))
    Ответ написан
    Комментировать
  • Как установить каноническую ссылку на страницах пагинации Битрикс?

    @ZardoZAntony
    программист, сис. админ
    Главная ошибка использования для подобного AddHeadString в том, что возможны ситуации, когда на одной странице в нескольких местах будет разный canonical. А в части решений забыли использовать второй параметр true, так будут выводиться дубли одного и того же, в случае если такой подход используется в разных компонентах. А так же вы получите дубляж при уже добавленном canonical от стандартных компонентов, которые такой подход не используют.

    Правильно использовать свойства страницы, как это делают стандартные компоненты битрикса
    Например catalog.element это делает так:
    $APPLICATION->SetPageProperty('canonical', $arResult["CANONICAL_PAGE_URL"]);


    Для страниц навигации правильно устанавливать canonical так:
    для шалонов используемого system.pagenavigation создаете файл component_epilog.php

    use Bitrix\Main\Web\Uri;
    $context = \Bitrix\Main\Application::getInstance()->getContext();
    $uri = new Uri($context->getRequest()->getRequestUri());
    $uri->deleteParams(['PAGEN_' . $arResult['NavNum']]);
    
    $protocol = $context->getRequest()->isHttps() ? 'https://' : 'http://';
    $href = $protocol . $context->getServer()->getHttpHost() . $uri->getUri();
    
    $APPLICATION->SetPageProperty('canonical', $href);


    В последних версиях ничего делать больше не нужно, если в header.php есть вызов
    <?php $APPLICATION->ShowHead()?>
    В других случаях надо явно указывать
    <?php $APPLICATION->ShowLink("canonical")?>

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

    Задача, которую опционально требуется решать - проверить, а не установлен ли canonical до вас. В таком случае вы его перетрёте, а это часто не то что нужно. Оставлю её на домашнее задание.
    Ответ написан
    1 комментарий
  • Как включить отображение неактивных элементов в Bitrix?

    @ZardoZAntony
    программист, сис. админ
    В этом файле жестко прописаны
    \bitrix\components\bitrix\catalog.smart.filter\component.php

    $arElementFilter = array(
    				"IBLOCK_ID" => $this->IBLOCK_ID,
    				"SUBSECTION" => $this->SECTION_ID,
    				"SECTION_SCOPE" => "IBLOCK",
    				"ACTIVE_DATE" => "Y",
    				"ACTIVE" => "Y",
    				"CHECK_PERMISSIONS" => "Y",
    			);
    Ответ написан
    Комментировать
  • Одно лицо покупатель и создатель заказа, кто то делал?

    @ZardoZAntony
    программист, сис. админ
    Не используйте профили покупателей, если это вам не нужно. Эти данные обычно берутся от туда, либо вводятся вами в форме заказа (не видя шаблона не сказать).

    Если я не пользуюсь профилями покупателей, то я подставляю данные при оформлении заказа из профиля пользователя.
    Ответ написан
  • Bitrix как же на нем правильно разрабатывать?

    @ZardoZAntony
    программист, сис. админ
    Делают везде как бог на душу положит. Тоже много где работал по битриксу.

    Стиль разработки, который задуман битрикс - это лучший варинат для разработчиков фулстеков или фронтендеров, которые хотя бы сдали экзамен по внедрению верстки. Он не грузит лишний js и css там где он не нужен. И чем больше проект, тем большее это благо.

    Вообще все проблемы людей, которые любят собирать всё в один js и один css файл - незнание архитектуры той CMS, с которой он работает. Тем более почти всегда это тупо верстальщик, который не знает куда пойдет его верстка, да и знать не хочет. Использовать BX он так же не умеет, что в итоге приводит к тому, что куча его скриптов и форм являются неудобными в применнии, т.к. есть гораздо более удобные нативные вещи. Это особо касается корзины и чекаута.

    Но скажу по секрету - webpack так же можно настроить, что он будет генерить шаблоны компонентов в нужных папках с стилями и js, а общие стили генерить в общие css и js. А фронтендер может по прежнему работать со своим postcss и ejs. Но да, чтобы настроить скрипты нужен спец по битриксу.

    У меня был большой проект на оптимизации, где я избавлялся от такой сборки и раскидывал все по компонентам. Почему? А как вам css+js - 27 мегабайт? Потом он со временем слез с битрикса, т.к. уже достаточно разросся.

    Какой вывод? За работу со сложной CMS берутся люди, которые не имею необходимых знаний по работе с ней, вот и начинают ругать битрикс. Нечего на зеркало пенять...
    Ответ написан
    5 комментариев
  • Где и как хранить языковые фразы для javascript в Битрикс?

    @ZardoZAntony
    программист, сис. админ
    Я так делаю в шаблоне:
    <script>
      BX.message({
        'BTN_MESSAGE_BASKET_REDIRECT': '<?=GetMessageJS("BTN_MESSAGE_BASKET_REDIRECT")?>',
        'BTN_MESSAGE_CLOSE_POPUP': '<?=GetMessageJS("BTN_MESSAGE_CLOSE_POPUP")?>',
        'CART_CAPTION_ADD': '<?=GetMessageJS("CART_CAPTION_ADD")?>',
        'CART_ADDED_TEMPLATE': '<?=GetMessageJS("CART_ADDED_TEMPLATE")?>'
      });
    
      console.log(BX.message("CART_CAPTION_ADD"));
    </script>
    Ответ написан
    Комментировать
  • Что значит BX.debug в консоли при добавлении товара в корзину?

    @ZardoZAntony
    программист, сис. админ
    В шаблоне template.php После BX.Sale.BasketComponent.init({....});
    надо добавить

    var basketJSParams = <?=CUtil::PhpToJSObject($arParams)?>
    Ответ написан
    Комментировать
  • Bitrix. system.auth.forgotpasswd не выводит никаких сообщений. Как исправить?

    @ZardoZAntony
    программист, сис. админ
    Результаты работы форм лежат здесь.
    $APPLICATION->arAuthResult

    В битриксе через жопу сделана кастомизация дефолтно вызываемых форм авторизации\регистрации\смены пароля.
    Ответ написан
    1 комментарий
  • Как перенести часть заказов с битрикса на битрикс?

    @ZardoZAntony
    программист, сис. админ
    Если не обновлял Битрикс (некоторые обновления могут менять структуру БД), то БД отдельно восстанови и всего делов.

    В ином случае надо писать модуль или отдельный скрипт, который создает отсутствующих пользователей, заказы, оплаты и отгрузки. Плюс еще там небольной тюнинг отдельных полей через прямой доступ к БД нужен, а то будет, к примеру, всё повторно в 1С выгружено. Если бизнес-процессы настроены на какие-то стадии, то их тоже надо дернуть\заглушить будет.

    В общем работы где-то на 20 часов, если уже делал, если нет, то на 2 недели копаться.
    Ответ написан
    Комментировать
  • Как подключить скрипты и стили компонента, подключаемого по ajax?

    @ZardoZAntony
    программист, сис. админ
    после успешного выполнения Ajax запроса в JS:
    в res - ответ сервера c HTML, в котором есть и скрипты

    let processed = BX.processHTML(res, false); // парсим HTML
    BX.ajax.processScripts(processed.SCRIPT);  //выполняем найденные скрипты
    Ответ написан
    Комментировать
  • Bitrix catalog.section как сделать вывод разделов и элементов?

    @ZardoZAntony
    программист, сис. админ
    А разве компонент bitrix:catalog.sections.top делает не то что нужно? Указываем для топ элементов число с большим запасом и всё.
    Ответ написан
    Комментировать
  • Купить 10 шаблонов или сделать самому?

    @ZardoZAntony
    программист, сис. админ
    Купить 1 шаблон, вынести отдельные элементы для кастомизации и пользоваться. Покупные шаблоны всегда дешевле, если сам не сможешь ничего сделать. А так дизайн - в среднем от 5000р, верстка тоже в среднем от 5000р, если не студенты говно-кодеры, а нормальные фрилансеры.
    Ответ написан
    Комментировать
  • Как использовать JavaScript с Bitrix?

    @ZardoZAntony
    программист, сис. админ
    Прочитать бесплатный курс разработчика для bitrix, хотя бы что такое шаблоны и как их применять.
    Скорее всего это потянет за собой отсутствие знаний js и php.

    А так без проблем: копируете шаблон компонента меню в свою тему или в local/templates/.default/, . Изменяете его под себя как душе угодно. Добавляете классов в вашем случае.
    Ответ написан
    Комментировать
  • Как у Битрикс отключить хранение сессий в базе данных?

    @ZardoZAntony
    программист, сис. админ
    Настройки - Проактиваная защита - Защита сессии.
    Отключить хранение в БД и смену идетификатора на второй вкладке сделать не менее суток.
    Ответ написан
    Комментировать
  • Как задать всем товарам количество random в Битрикс?

    @ZardoZAntony
    программист, сис. админ
    Не знаю как для предложений, а для обычных товаров будет работать точно и намного быстрее штатного механизма битрикса. Это если 1 каталог на сайте, если несколько, то нужно доп. фильтрация
    AddEventHandler('catalog', 'OnSuccessCatalogImport1C', 'customCatalogImportStep');
    
    /**
     * Устанавливаем случайное кол-во товаров
     * @param $arParams
     * @param $arFields
     */
    function customCatalogImportStep($arParams, $arFields) {
        global $DB;
        $DB->Query('UPDATE b_catalog_product SET AVAILABLE = "Y", QUANTITY = FLOOR(1 + RAND() * 10);');
    }
    Ответ написан
    Комментировать
  • Как добавить на 1С Битрикс ссылку canonical?

    @ZardoZAntony
    программист, сис. админ
    AddHeadString плохое решение. А если у вас уже другой криво написанный модуль установил canonical через такую же функцию. Правильно делать так:

    В админке создаем свойство canonical. В нужных местах его устанавливаем через $APPLICATION->SetPageProperty('canonical', 'link'); И в том смысл этой отложенной функции, что установится только последняя по коду ссылка, а установок может быть сколько угодно в любых компонентах и не будет конфликта.

    в init.php добавляем отложенные функции для вывода
    function ShowCanonical() {
        global $APPLICATION;
        $APPLICATION->AddBufferContent('GetCanonical');
    }
    
    function GetCanonical(){
        global $APPLICATION;
        $val = $APPLICATION->GetProperty('canonical');
        if ($val)
            return  '<link rel="canonical" href="' . $val . '">';
    }

    Выводим через ShowCanonical();
    Ответ написан
    Комментировать
  • Можно ли очистить папку resize_cache?

    @ZardoZAntony
    программист, сис. админ
    Я переименовал папку. Часть изображений в каталоге пересоздаласть, часть нет. Нужно еще сбросить весь кеш. Тогда все норм.
    Ответ написан
    Комментировать