Задать вопрос
  • Как в 1с-битрикс реализовать избранные товары?

    @ncheremisin
    Принимаю заказы на Битрикс
    У Раруса тут да, немного по-дурацки написано, сам наткнулся и понял что статья не полная. В общем то, там все хранится или в куки или у пользователя в профиле. Отдельную таблицу создавать не надо, все в принципе прозрачно если немного разобраться.

    Сначала они предлагают вывести кнопку в шаблон с ссылкой и количеством избранных товаров в шапку, затем страницу Избранное и потом уже в карту товара повесить код
    <a class="favor" data-item="<?=$arResult['ID']?>">В избранное</a>

    Ну и в компонент-эпилог повесить обработчики на js, чтобы в кеш не попадать.
    Ответ написан
    4 комментария
  • Пишет Class not found. Как правильно определить пространство имен?

    gromdron
    @gromdron
    Работаю с Bitrix24
    Эээ... а что вы сделать то хотите ?

    Я вот о чем говорю: при использовании ООП в bitrix вы сталкиваетесь сразу с 2 большими стенами - применение ооп и битрикс. Прежде чем разбирать конкретный код хотелось бы немножко просветить вас в самой архитектуре битрикса.
    В терминологии Битрикса он использует концепцию MVC, но в рамках битрикса, а это означает что на любой странице где вы общаетесь с ним вы должны подключить пролог (хотя бы prolog_before) и эпилог (хотя бы epilog_after, ну в идеале). Именно "компонент" и является тем самым MVC (Вообще это скорее VC + row access, так как модели по сути нет). Есть класс CBitrixComponent (контроллер) и класс CBitrixComponentTemplate (который совместно с файлами шаблона и образует view).

    Вызов компонента происходит из глобальной переменной $APPLICATION путем метода IncludeComponent. До версии 14 (если мне не изменяет память) вообще не было такого понятия как class.php, где можно было отнаследоваться от CBitrixComponent и перекрыть какие-нибудь функции (шаблонизатор к примеру сменить), а после нового ядра d7 появилась возможность отнаследоваться от CBitrixComponent и в файле class.php разместить свой код (таким образом мы сохраняем и class.php с новыми функциями и component.php с логикой), а перекрывая метод executeComponent вы можете избавиться и от component.php.

    С точки зрения архитектуры (рекомендую изучить документацию, она очень обширна и познавательна) все компоненты должны лежать в так называемом пространстве имен, чем обычно служит ник-нейм или название компании (Естественно начинается не с цифры и содержит только латинские буквы), которые в свою очередь могут располагаться в /bitix/components/#пространство_имен#/#название_компонента#/

    Теперь построчно разберем Ваш вопрос:

    Вы положили свой класс сюда: /bitrix/templates/app/Pi/Test.php, что является неверным с точки зрения архитектуры, так как поместили класс отвечающий за контроллер в папку с шаблоном. Если вы не пишете свой модуль вы можете подключить его например в /local/php_interface/classes/ (пример надуманный, можете просто в /local/php_interface положить или сразу в init.php), однако для этого вы должны будете написать autoloader, так как у битрикса он работает только для модулей. Предположим вы в init.php напишете грубый require_once с файлом.

    Затем вы делаете следующее:

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

    class app\Pi\test extends app\Pi\CBitrixComponent
    {
    // ...
    }

    А класса app\Pi\CBitrixComponent не существует. Так что вам нужно поправить пример хотя бы так:

    class test extends \CBitrixComponent

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

    @0x131315
    Многие запросы на битрикс немного ускоряются, если уточнить запрос, например вместо 'IBLOCK_ID'=>10 указывать '=IBLOCK_ID'=>10
    Ответ написан
    Комментировать
  • Как найти источник медленных запросы MySQL?

    BusteR27
    @BusteR27
    Lead bitrix dev
    Найти место, где генерятся эти запросы не сложно - достаточно запустить Монитор производительности с записью sql-запросов.

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

    @anton99zel Куратор тега 1С-Битрикс
    29а класс средней школы №7
    Уменьшите количество элементов на страницу, включите кэширование, удалите неиспользуемые свойства, выводите только нужные, проведите оптимизацию на странице производительности, пересоздайте фасетный поиск. Проверьте компоненты на сторонний код. Смотрите сервер - сколько памяти и как она расходуется, используйте php7
    Короче тут можно трехтомник писать этих советов)
    Ответ написан
    5 комментариев
  • Как найти источник медленных запросы MySQL?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Непонятно, зачем тебе источник.

    Запрос у тебя есть - его и надо оптимизировать.
    Ответ написан
    Комментировать
  • Как найти источник медленных запросы MySQL?

    samodum
    @samodum
    Какой вопрос - такой и ответ
    Сайт на 1с-Битрикс.

    Вот и проблема.
    Дальше читать не имеет смысла.

    Текст запроса значения тоже не имеет - нужны данные о самих таблицах: размер, индексы, типы полей, по которым идут джойны.
    Это целая аналитическая работа.
    Смотри план выполнения
    Ответ написан
    1 комментарий
  • Как в phpstorm отменить merge?

    dlnsk
    @dlnsk
    ПК Партнер 01.01 -> ПК Поиск -> IBM PC
    1. Откройте панель git.
    2. Правой кнопкой на целевом коммите.
    3. Reset Current Branch to Here...
    В диалоге выбираете тип ресета. Вам, видимо, нужно hard.
    Пушить на github нужно будет с флагом -f
    Ответ написан
    Комментировать
  • Как перенаправить шаблон элемента компонента bitrix:catalog?

    alexyarik
    @alexyarik
    Битрикс разработчик
    В составе компонента "bitrix:catalog" есть файлы section_horizontal и section_vertical там вам нужно указать новый шаблон для catalog.section где-то с 229 строки
    $intSectionID = $APPLICATION->IncludeComponent(
    					"bitrix:catalog.section",
    					"",
    					array(
    						"IBLOCK_TYPE" => $arParams["IBLOCK_TYPE"],
    Ответ написан
    1 комментарий
  • Как удалить динамически созданный элемент jquery?

    @IoannGrozny
    Front-end разработчик
    Во-первых, если вы создаёте множество динамических элементов, не используйте в них id и не ссылайтесь на них по id. Селектор по id выбирает только первый элемент из списка, потому что такой элемент должен быть один.
    Во-вторых, метод .click() не работает с динамически добавленными элементами. Поэтому событие вешается только на тот элемент, который уже был на странице. Навешивайте обработчик события методом .on() на элемент html. Это проделегирует обработчик на все элементы, указанные в качестве контекста, включая те, что были созданы динамически.
    Суммируем:
    <span class="addField add">
        <i class="icon"></i>Добавить
    </span>
    <div class="inputs">
        <div>
            <input type="file" name="dynamic[]" class="field" > 
            <span class="remove">Удалить</span>
        </div>
    </div>

    $(document).ready(function () {
        $('html').on('click','.add',function () {
            $('<div><input type="file" class="field" name="dynamic[]" /><span class="remove">Удалить</span></div> ').fadeIn('slow').appendTo('.inputs');                                
        });
        $('html').on('click','.remove', function () {                               
            $(this).parent().remove();    
        });
    });
    Ответ написан
    Комментировать
  • Yota + Torrent?

    Q2W
    @Q2W
    Ну можно арендовать VPS либо заюзать домашний сервер (если дома нормальный инет), прокинуть домой туннель (OpenVPN в помощь) и юзать домашний инет.

    Но это, имхо, извращение ради одних только торрентов. =)
    Ответ написан
    Комментировать
  • Как вывести цену с пробелами в битриксе?

    iiil
    @iiil
    Инженер и вэб-дизайнер, рисую.
    Даже если Вы первоначально выведете с помощью битрикса число в отформатированном виде, меняя его ползунком Вы получите опять неотформатированное число.
    Также, скрипт работы ползунка не умеет работать с числами с пробелом - можете сами убедиться, вбив число 10 000, например. Ползунок просто исчезает.
    Соответственно, все это тянет нас дальше:
    1. Надо переделать работу скрипта ползунка на:
    а. Проверку на число или преобразование в число строки
    б. Преобразование результата в форматированную строку (с пробелами)
    2. Необходимо убедиться, что фильтр будет работать - сейчас он не работает, так как насколько я понял, считает 10 000 как 10 (фильтрует результаты только по 1 руб.)
    Если со вторым пунктом битрикс может и сам разберется (это при условии, что вывод в форматированном виде будет происходить средствами битрикса, насколько я знаю формат там только для price, то есть не Ваш случай), то первый пункт все равно придется решать самому.

    А если Вы про результат работы фильтра, то есть список товаров с ценами, то это как раз случай решаемый, см. dev.1c-bitrix.ru/api_help/catalog/price.php#Format...
    Ответ написан
    Комментировать
  • Как подключить локальное хранилище в Nextcloud 19?

    @Sampson
    1. Посмотри оунера и группу папки где установлен nextcloud (ls -l), плюс юзер должен быть в группе слушателя www (nginx или www-data). У тебя PHP не имеет права доступа (посл строка)
    2. Дай такого же юзера/оунера на указанные папки

    SMB-клиент нужен для удалёнки. Если что - вот тут на мысли натолкнёт ещё)
    https://github.com/nextcloud/nextcloud-snap/wiki/C...
    Ответ написан
    1 комментарий
  • Bitrix как записать поле SUM_PAID в таблице заказа?

    yous
    @yous Автор вопроса
    отвечу сам себе, нашёл в файле \bitrix\modules\sale\lib\sale.php метод $this->setFieldNoDemand

    проверил работает

    $order->setFieldNoDemand('SUM_PAID', 100);
    Ответ написан
    Комментировать
  • Class 'Bitrix\Sale\Basket' not found (если подключать плолог, а если подключать header.php работает).Как подключить?

    nikolaevevge
    @nikolaevevge Автор вопроса
    Разобрался!

    После use забыл написать:

    Bitrix\Main\Loader::includeModule("sale");
    Bitrix\Main\Loader::includeModule("catalog");
    Ответ написан
    Комментировать
  • Что за пустота с символами ?

    @humoured
    Вы всё на свете найдёте в коробке с карандашами
    Это BOM-метка. Её ставят некоторые текстовые редакторы в начало файла. В конкретном вашем случае она стоит, скорее всего, в каком-то другом файле-вьюшке, а не в указанном template.php со скрина.
    Какой файл подключается следующим? Ему и меняйте кодировку.
    Ответ написан
    2 комментария
  • Как посмотреть пароль PostgreSQL?

    @anikavoi
    Посмотреть - никак.
    Поменять - galaxy ответил.
    Останавливаете постгрис, редактируете pg_hba.conf (ессесно сохранив исходный)
    local all postgres trust
    host all postgres 0.0.0.0/0 trust
    host all all 127.0.0.0/8 trust

    запускаете постгрис,
    дальше спокойно на него заходите хоть psql хоть чем, и меняете пароль
    ALTER ROLE postgres WITH PASSWORD '123'; или в psql \password
    Ответ написан
    Комментировать
  • Как найти шаблон страницы битрикс?

    Adamos
    @Adamos
    Шаблоны Битрикса - /bitrix/templates
    Собственно, можно просто в админке посмотреть "Шаблоны сайта" - там редактор тех же самых файлов.
    Ответ написан
    2 комментария
  • Как в Битрикс HighloadBlock сделать обратную постраничную навигацию?

    s_panteleev
    @s_panteleev
    25 yo, Yaroslavl
    <?php
    
    \Bitrix\Main\Loader::includeModule('highloadblock');
    
    $hlBlockId = 1;
    $hlObject = \Bitrix\Highloadblock\HighloadBlockTable::getById($hlBlockId)->fetch();
    
    $entity = \Bitrix\Highloadblock\HighloadBlockTable::compileEntity($hlObject);
    $entity_data_class = $entity->getDataClass();
    
    $newsList = $entity_data_class::getList([
          'filter' => $filter,
          'offset' => $nav->getOffset(),
          'limit' => $nav->getLimit(),
    ]);
    Ответ написан
    1 комментарий
  • Как Яндекс обходит покупку в приложении от Apple?

    402d
    @402d
    начинал с бейсика на УКНЦ в 1988
    если у вас мультиплатформенное приложение и общая авторизация и есть еще веб апи и т п, то покупка лицензий/подписок и как его не назови может быть осуществленна через любой стор или в личном кабинете вашего сервиса.
    Что НЕЛЬЗЯ - это продвигать альтернативные способы оплаты. Пользователю каждой платформы нужно в первую очередь предложить нативный биллинг.

    Например у гугла сейчас действует послабление в правилах для РФ, но боты модерации докопались, человек жаловался на 4ПДА. Увы чем закончился спор кажется на форуме не отписался.
    Ответ написан
    2 комментария