Задать вопрос
  • Возможно ли добавить к купону правила корзины свой префикс через API?

    @tgarl
    Так замените addPacket на просто add
    $coupon =  \Bitrix\Sale\Internals\DiscountCouponTable::generateCoupon(true);
                        $arForCoupon = array(
                            'DISCOUNT_ID' => $skidkaId,
                            'COUPON' => 'MY_'.$coupon,
                            'TYPE' => \Bitrix\Sale\Internals\DiscountCouponTable::TYPE_ONE_ORDER,
                            'ACTIVE_FROM' => $activeFrom,
                            'ACTIVE_TO' => $activeTo,
                            'MAX_USE' => 1,
                            'USER_ID' => 0,
                            'DESCRIPTION' => 'описание' 
                        );
    
                        $addDb = \Bitrix\Sale\Internals\DiscountCouponTable::add($arForCoupon);
    Ответ написан
    Комментировать
  • Как завышать цену?

    @vitaly_il1
    DevOps Consulting
    Во-первых, тэг неправильный - вместо него надо "фриланс" или что-то подобное.

    По сути - я вижу два варианта:
    1) дать самую пессимистичную оценку
    2) разбить задачу на два этапа - а) тесты, иссследование и проч., после которого будет оценка, и б) основной проект

    Все это при условии что задача на 100% выполнима.
    Ответ написан
    Комментировать
  • Можно ли через API вывести в публичной части используемый шаблон сайта?

    Очень трудно разобраться что вы имели ввиду, даже в самом вопрос, так как вывод это отображение, используемый шаблон это отображающийся шаблон, т.е. вообще-то используемый шаблон сайта всегда выводится в публичной части просто по определению. Что такое балоны для меня вообще загадка...

    Но несколько раз прочитав я подумал что вероятно вы хотите как-то видеть имя используемого шаблона. Возможно вам подойдет путь к его папке. В этом случае вам поможет вывод констант SITE_TEMPLATE_ID и SITE_TEMPLATE_PATH
    Ответ написан
    2 комментария
  • Редирект, только для одного варианта страницы с параметром?

    shambler81
    @shambler81 Куратор тега htaccess
    1. я тут уже собрал все редиректор для битрикса https://klondike-studio.ru/standards/standartnyy-h...
    2. Не должно быть в индексе ни 1 странички с GET так что по хорошему в роботс ты закрываешь все странички с гет параметрами вообще. Не нужно мурыжить пейдженацию
    3. У тебя есть странички для сео, следовательнор ты их делаешь через привязку к секциям у секций настраивается чпу.
    Все что через смарт это ненужные странички типа "красный холодильник, бытовой, до30ват, бош" то есть мелочевка которая вообще не нужна в индексе ибо канибализирует запросы у более тяжелых страниц.

    Теперь по твоему тз
    RewriteCond %{QUERY_STRING} (^|&)PAGEN_2=1
    меняем на
    RewriteCond %{QUERY_STRING} (^|&)PAGEN_2=1$
    А чтоб вообще не париться
    https://donatstudios.com/RewriteRule_Generator
    Но опять же вы занимаетесь хераборой, смысла от этого нет.
    Вам нужно избавляться от всех гет а не части тех что у вас вылезла в 404
    Времена индекса милиона страниц на сайте ушли уже лет 7 назад
    Ответ написан
    Комментировать
  • 301й редирект со страницы с параметром на аналогичную без?

    shambler81
    @shambler81 Куратор тега htaccess
    Собственно
    1. выделяешь все что нужно в группу () редеректишь на нее же $1 , гет параметр не является частью урла по этому ты не сможешь его просто так взять и выделить его. для этого используется RewriteCond с специальной строкой.
    А вот чтоб удалить все гет параметры
    В строке КУДА добавь в конце "?" и все
    RewriteRule ^(.*)$ /$1? [L,R=301]
    Однако он так будет удалять вообще все гет параметры на сайте.
    думаю тебе нужно другое, судя по урлам ты хочеш удалить пейдженацию вместо того чтоб прятать ее за аякс.
    или запретить индексировать в robots.txt
    Собственно вот тебе

    RewriteCond %{QUERY_STRING} (^|&)page\=.+($|&)
    RewriteRule ^(.*)$ /$1? [L,R=301]

    КАК-ТО С ВИДУ ТАК
    Далее следует спасибо кэп это апупенно, вот тебе лайкосик бротик, вот тебе "решено"
    PS
    (^|&).....($|&)
    нужно посколкьу это может быть не единственный GET
    Ответ написан
    1 комментарий
  • Как приветси GET-ответ в удобочитаемый вид?

    ipatiev
    @ipatiev Куратор тега PHP
    Потомок старинного рода Ипатьевых-Колотитьевых
    Это называется не "GET ответ", а JSON
    Ответ написан
    Комментировать
  • Импорт 1с-битрикс. Как не изменять изображения?

    @anton99zel Куратор тега 1С-Битрикс
    29а класс средней школы №7
    /bitrix/admin/settings.php
    Контролировать загрузку дубликатов файлов: V
    Работает в относительно новых версиях Битркис.
    Ответ написан
    Комментировать
  • Как через API задать идентификатор отправления для службы доставки в заказе?

    winer
    @winer
    занимаюсь разработкой сайтов на 1c-bitrix
    /** int $orderId ID заказа */
    $order = \Bitrix\Sale\Order::load($orderId);
    
    $collection = $order->getShipmentCollection()->getNotSystemItems();
    $needShipment = null;
    foreach ($collection as $shipment)
    {
    	//В примере выбирается первая отгрузка. Опишите выбор отгрузки так как вам надо
        $needShipment = $shipment;
        break;
    }
    
    if (!is_null($needShipment)) {
    	$needShipment->setField("TRACKING_NUMBER", 'xxxxxxxxxx');
    }
    Ответ написан
    1 комментарий
  • Где есть новости о веб-разработке?

    ThunderCat
    @ThunderCat Куратор тега Веб-разработка
    {PHP, MySql, HTML, JS, CSS} developer
    На хабре еженедельный(?) обзор новостей по фронтенду и вроде такой же по мобильной разработке, и вроде по бэку тоже что-то такое есть.
    Ответ написан
    Комментировать
  • Как проще выводить видео на сайте через файлы?

    Tomio
    @Tomio
    backend developer (python, php)
    Может стоит попробовать написать скрипт, который будет перегонять видео с Youtube в mp4 файл на сервере с сайтом?
    Алгоритм примерно такой:
    1 - Заводите новое поле с типом "Файл" для видео
    2 - Пишите скрипт, в котором:
    2.1 - Делается выборка элементов каталога со ссылкой на видео в Youtube (вытаскиваем только ID элемента и ссылку на видео)
    2.2 - Проходимся по каждому элементу, по ссылке скачиваем видео в папку на сервере и записываем путь к нему. После закачки прикрепляем видео к элементу по ID элемента и ID нового созданного свойства из п.1
    2.3 - Обновляем элемент
    3 - Вносите изменение в публичной части сайта. Проверяете, если у элемента заполнено новое свойство из п.1, то выводите скачанное видео с сервера. Иначе отображаете видео с Youtube.

    Я не описывал техническую сторону в подробностях, ибо реализация может быть разной. Первое, что нужно будет победить - скачивание видео с Youtube. Погуглите на эту тему, на php есть библиотеки для этого.
    Ответ написан
    Комментировать
  • Тестирование больших vue приложений?

    а как тестировать крупные приложения?

    Да точно также.

    Как понять, что именно мне нужно покрыть тестами?

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

    Ведь по логике нужный каждый кусок покрывать, чтобы быть на 100% уверенным в этом коде?

    Да, но полное покрытие - это очень дорого, и часто не оправдано.

    По тому, если приоложение большое, а тестов нет:
    1. Покрываем самое критичное и важное, без чего просто жить нельзя, если оно поломается.
    2. Покрывает то, где много изменений происходит, и есть шанс случайно поломать.
    3. Покрываем всё новое, как часть реализации фичи.
    4. Юнит тестами ещё есть смысл покрыть всякие общие компоненты, которые используются тупо везде.

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

    А vue тут ни при чём.
    Ответ написан
    3 комментария
  • Курс или полный гайдлайн по git?

    msshubna
    @msshubna
    junior
    onlywei.github.io/explain-git-with-d3
    визуализированный консепт , передайте линк джуну
    Ответ написан
    1 комментарий
  • Какие стратегии повышения зарплаты существуют?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Центральный показатель для бизнеса, а следовательно и руководителей, как людей представляющих интересы этого самого бизнеса - это коэффициент возврата инвестиций (ROI). Соответственно, сотрудник должен приносить компании больше денег, чем потребляет. Естественно, что чем выше разрыв между затратами и прибылью, тем лучше, поэтому фонд оплаты труда руководитель должен держать на том минимальном уровне, который гарантирует бесперебойную работу сотрудников. Один из факторов этой бесперебойности - низкая текучка. Сотрудников терять нежелательно. И чем ценнее для компании сотрудник, чем более он профессионален и/или чем больше на него завязано, тем дороже обходится его потеря. Натурально в деньгах. Придётся затратить больше, чем обычно, денег на поддержание работы без него. Придётся затратить деньги и время (те же деньги) на поиск, найм, введение в работу, возможно, обучение нового сотрудника. При этом он может оказаться совсем неподходящих и цикл придётся повторить. Или может оказаться просто хуже прошлого и эффективность отдела снизится. Поэтому, когда сотрудник приходит просить прибавку, руководитель оценивает может ли этот сотрудник уйти или только блефует, насколько легко его будет заменить, какой урон компании будет нанесён его уходом. Потом руководитель оценивает стоимость расширения ФОТ - есть ли резервы, какой сейчас ROI, будет ли больший ROI от реинвестиции этих средств во что-то другое? Если уход сотрудника будет стоить меньше, чем увеличение ФОТа, сотруднику откажут.

    Естественно, всё описанное справедливо для случая, когда руководитель - профессиональный менеджер. А то часто на месте руководителя сидит человек руководствующийся эмоциями и мутными соображениями вычитанными в сомнительной бизнес-литературе.

    Из этого вывод, стратегия проста - увеличивайте собственный профессиональный уровень на столько, чтобы свободно менять компанию, как только вас что-то перестало устраивать.
    Ответ написан
    4 комментария
  • Какой тв пригоден в качестве монитора?

    DevMan
    @DevMan
    сейчас, OLED на больших матрицах – утопия и дорого.
    оно даже на небольших (в сравнении с телевизором) не всегда хорошо себя ведет.

    возьмите себе ips–монитор на 45"; хоть прямой, хоть кривой (лично я за прямой, по практическим соображениям). на метр вам его точно хватит.
    Ответ написан
    3 комментария
  • Автоматическая регистрация при заказе. Как добавить дату дня рождения в профиль пользователя?

    babarun
    @babarun Куратор тега 1С-Битрикс
    Безумный план моих идей в руках больных людей
    Есть элегантный костыль. На событии создания заказа записываете дату в сессию, например в поле REGISTER_AND_LOGIN_PERSONAL_BIRTHDAY, на событие пролога делаете проверку на непустоту этого поля в сессии, если оно есть, тогда записываете его в учётку пользователя и удаляете это поле из сессии.
    Ответ написан
    Комментировать
  • Скидка на последний размер?

    @anton99zel Куратор тега 1С-Битрикс
    29а класс средней школы №7
    Аналогично как на вашей картинке, только выбрать свойство и сделать равным 1.
    Это самое свойство создайте у товара, записывайте в него общее кол-во ТП.
    Значение свойства можно изменять событиями, либо при обмене с 1с.
    Ответ написан
    1 комментарий
  • Пишет 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

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

    pro6ka
    @pro6ka
    web developer
    перенесите его в своё пространство имён /local/modules/custom_module и модифицируйте на здоровье.
    Ответ написан
    5 комментариев
  • Достаточно ли такого уровня верстки чтобы уже ходить на собеседования верстальщиком?

    К мелочам, но важным, придираться не буду, их наберется очень много. Из грубого - нет адаптивности. 75% юзеров видят наши сайты через смартфоны. Наш контент не готов под это = нас нет в бизнесе. Для первой верстки неплохо, очень неплохо, но в реальной работе в столкнетесь с гонкой со временем, требованиями дизайнера, и еще очень многими факторами, в работе с которыми нужен чистый опыт, чтобы не ломать голову как сделать то или это...
    Ответ написан
    2 комментария