• Добавление товара в корзину пользователя по условию, как сделать правильно?

    Вешайте обработчик на следующие события модуля sale:
    OnBasketUpdate
    OnBasketDelete
    OnBasketAdd

    Т.е. на каждое изменение состава корзины.
    Так как сам обработчик тоже будет менять состав, не забудьте добавить флаг, чтобы не уйти в рекурсию. Что-то вроде:
    if (self::$Bypass) return;
            self::$Bypass = true;
    
            // здесь ваш код
    
            self::$Bypass = false;


    Далее вам остается получить корзину, посчитать вес товаров без учета вашего, рассчитать нужное количество вашего товара и изменить его, добавить или убрать.

    Корзину бы я получал на месте, не оглядываясь на входящие параметры:
    \Bitrix\Main\Loader::includeModule('sale');
            $basket = \Bitrix\Sale\Basket::loadItemsForFUser(
                    \Bitrix\Sale\Fuser::getId(),
                    \Bitrix\Main\Context::getCurrent()->getSite()
                );


    Входящие параметры сделайте так:
    public static function basketOperator ($_=0,$__=0,$___=0)
    Ответ написан
    Комментировать
  • Почему выдает пустой результат sql запроса?

    Сделайте принт переменной $sql и, я думаю, всё будет понятно. Ну а если нет - покажите что там выводит.
    Сейчас часть вопроса спрятана у вас за именем $sqlValue

    Ну а еще лучше - используйте API.
    Ответ написан
    Комментировать
  • Как сделать, чтобы во время добавления товара в корзину -у него менялась цена в битрикс 1с?

    Видимо вы хотите изменить цену добавляемого в корзину item.
    При этом рассуждаете так - цена item'a корзины предоставляется провайдером товара, следовательно если я заменю провайдер на свой, и буду менять в нем цену, то товар попадет корзину по нужной мне цене.
    С виду логично.

    Посмотрим что происходит когда реально item добавляется в корзину:
    Битрикс создает item, вычисляя его цену провайдером по умолчанию, далее перед добавлением item'a в корзину, битрикс вызывает ваш обработчик, который заменяет класс провайдера, после чего добавляет товар в корзину )))

    Какая у него цена? Ну логично же что она осталась той же что была на этапе создания item, то что вы потом поменяли класс провайдера, никак на цене уже созданного itema не скжажетися вплоть до нового пересчет корзины.

    Пересчитайте принудительно после замены провайдера. Кажется есть или метод специальный, или save для item надо вызвать.

    И да - цена тут меняется НЕ У ТОВАРА, а у пункта корзины.
    Ответ написан
    6 комментариев
  • Не добавляет в меню битрикс произвольную ссылку?

    Пример "придуманной" ссылки с которой все ок, покажите?
    Если две добавить? Эту и придуманную?

    Смотрите шаблон компонента. Думаю в коде шаблона ответ и будет.
    Ответ написан
    Комментировать
  • Как настроить поиск по заголовкам раздела?

    Никак.
    По большому счету вкладка SEO никакого отношения к данным сущности неимеет.

    Реализовать можно добавив обработчик события на событие BeforeIndex, модуля search, который будет добавлять в индекс нужные вам данные.
    Ответ написан
    Комментировать
  • Как в битриксе можно завершить работу агента?

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

    .runComponentAction и так шлет все по сути на одну точку входа - вам нужно лишь создать соотвествующий компонент

    .runAction можно использовать для модуля и создавать свои контроллеры внутри модуля.

    НУ и третий вариант вам уже предложили - используя новый роутинг настроить точку входа, например:
    $routes->post('/api/feedback', [\App\Controller::class,'sendFeedback']);


    Далее вы просто создаете контролер скажем local/php_interface/lib/App/Controller.php
    Остается сделать автозагрузку. Я просто описываю для композера:
    {
        "name": "mav/myproject",
        "type": "project",
        "autoload": {
            "psr-4": {
                    "App\\": "lib/App",
                }
        },
        "require-dev": {
            "kint-php/kint": "dev-master"
        },
        "require": {
            "mav/slovo": "^0.2.3"
        }
    }


    Всё.
    Ответ написан
    Комментировать
  • Как через ssh выгрузить проект локально и аплоадить изменения?

    Из всех редакторов и IDE, нормально работает по сети, без удаленного сервера, только Komodo. И sftp и ftp. Для VS Code есть расширение ftp-simple, но очень неудобное, уже не помню в чем. Все остальные редакторы либо имеют такие же глючные или неработающие расширения, или вообще костыли типа того что вы описали в web storm, когда проект выкачивается локально. В этом случае лучше уж подключить удаленную папку проекта по сети, через тот же sshfs, хотя это медленно будет. Или через NFS - это будет поживее.

    пробовал выгрузить через плагин ssh fs - нет возможности аплдоадить.

    Не знаю чего у вас за плагин такой, но при подключении по sshfs ничего не надо ни выгружать ни аплойдить - вы просто монтируете удаленную папку.
    Ответ написан
    Комментировать
  • Как в vscode сделать заметки в виде боковой панели?

    Перебрал несколько расширений, в итоге сделал папку howto локальную с md файлами и добавляю ее в проекты просто, как вторую папку:
    Ответ написан
  • Как настроить навигационную цепочку?

    Не важно как у вас строятся URL. И то что последний раздел тоже кликабельный значения не имеет.
    Подозреваю вы используете штатные комплексные компоненты в SEF режиме - т.е. сделали всё чтобы потерять контроль над роутингом.
    Самое просто решение думаю - это выключить в компонентах добавление айтемов в навигационную цепочку и управлять ей вручную в component_epilog.php: $APPLICATION->AddChainItem('Имя', 'Ссылка', true);
    Ответ написан
    Комментировать
  • Есть ли на PHP сокращенный перебор массива?

    Еще один вариант, ближе к стилю js:
    $ar = array_map(function ($Val) {
    				// ваш код
    				return $NewVal;
    			}, [1,2,3]);
    Ответ написан
    2 комментария
  • Как построить взаимодействие админки с данными проекта?

    Для начала забыть про админку.
    Проверять права пользователей на уровне модели данных.
    Пилить нужные пользователям интерфейсы.
    Профит.
    Ответ написан
  • Возможно ли по "одному клику" включить/выключить проксирование для всей системы?

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

    А как вы цену назначает? Ну вот там же смотрите какой выбран пункт и в зависимости от него считайте.
    В чем у вас конкретно проблема?

    У вас есть метод calculateConcrete? Вы в нем вычисляете стоимость доставки?
    Ответ написан
  • Сортировка сразу по нескольким параметрам - Наличие и цена, есть ли способ?

    В любом практически компоненте можно сделать сортировку по двум параметрам. В комплексном компоненте catalog для этого есть параметры ELEMENT_SORT_{ORDER|FIELD} и ELEMENT_SORT_{ORDER|FIELD}2

    Но если вам нужно больше чем два параметра - придется делать нормально.
    Ответ написан
  • Программирования учат или применяют?

    Программирование это по сути просто подробное описание процесса или объекта (в случае с html, например), на каком-то языке.

    Можно ли хорошо владеть языком не зная теории? В принципе - да. Говорите же вы на русском и понимаете его не зная например всех его падежей.

    Можно ли владеть языком на самом высочайшем уровне? Легко. Гомер или Шекспир не дадут соврать. Но Гомеров и Шекспиров в истории человечества было ровно по одному. Да я тягались они со своими современниками так же ничего не знавшими о теории языков на которых они писали. Может ли современный писатель или поэт стать классиком не будучи знакомым с теорией языка? Может. Но без теории написания текстов - вряд ли. Вам будет сложно написать интересную книжку или сценарий фильма, не будучи знакомым хотя бы с "Морфологией волшебной сказки" Проппа.

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

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

    Почему это не зашивать?
    Как раз более правильным будет зашить все запросы в тот компонент который их отправляет.

    Какие могут быть исключения?

    1 Если один запрос отправляют разные компоненты, но тогда лучше пересмотреть сами эти компоненты - например сделать один родительский, который объединит в т.ч. и запросы и несколько внутренних, сменяемых компонентов реализующих например разное представление. В крайнем случае сделать миксин с запросами

    2 Если данные прилетающие в ответ на отправляемые запросы используются разными компонентами, а не только тем которые отправляет запрос. В этом случае для хранения данных лучше использовать стор и туда же поместить запросы, например в экшены viuex, а компоненты в этом случае должны взаимодействовать не с сервером, а с vuex.
    Ответ написан
    Комментировать
  • Как хранить дополнительные данные компонентов?

    Suntechnic
    @Suntechnic Автор вопроса
    Если бы современные трасформеры могли ответить на этот вопрос, я бы вообще сюда не пришел.
    Ответ написан
    Комментировать