Задать вопрос
  • Как изменить CSS в карточке товара?

    Если есть только строковое поле ввода, и html теги там недопустимы (или будут экранированы), то я не знаю, как такое можно реализовать. Это просто текст в контейнере, .слова перетекают с одной строчки на другую. То, что Вы, как человек, видите, как эти слова надо разбить по строчкам, для машины совершенно непонятно.
    А если система доступна для доработки, то я бы ввёл дополнительные поля "Пояснение" и "Упаковка".
    Ответ написан
    Комментировать
  • Можно ли как-то откатить локальный репозиторий до локального коммита?

    если надо временно спрятать изменения (например, забыли сделать pull с боевого), то есть есть stash:
    stash add - прячет только изменения по отслеживаемым файлам
    stash add -u прячет в том числе и неотслеживаемые файлы. Тут нужно, чтобы игнор был нормально настроен, чтобы в stash не улетел какой-нибудь каталог с фото/видео.

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

    Вы неправильно осмыслили задачу, и получился франкенштейн. Одна задача - это вставка ссылки при событии oncopy. Это делается на чистом Javascript, абсолютно не требует PHP, и никакого отношения к WordPress не имеет. Можете эту часть спросить отдельно в хабе Javscript - хотя я подозреваю, что в интернете уже выложена куча решений.
    А вторая задача у Вас уже решена; я только использую хук на другое событие:
    add_action( 'wp_enqueue_scripts', function () {
        if ( !current_user_can( 'manage_options' ) ) {
            wp_enqueue_script('oncopy_addlink', '/path/to/script.js');
        }
    });
    Ответ написан
    5 комментариев
  • Как сделать на одной странице корзину и оформление заказа, чтобы при вводе промокода цена на товары пересчитывалась без перезагрузки страницы?

    при вводе промокода сумма меняется

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

    Либо писать самому (но если уж писать, то на D7 , по возможности)
    Ответ написан
  • Есть ли возможность убрать округление количества при добавлении в корзину?

    Как говорится, тут или крестик снять, или трусы надеть. Коэффициент единицы измерения и был введён с целью обеспечить дробное количество товара, смотрите учебный курс: https://dev.1c-bitrix.ru/learning/course/index.php...
    Ответ написан
  • Как в PHP создать свою глобальную функцию?

    Как в PHP создать свою функцию и использовать ее без объявления в файлах,

    Создать без объявления - разве что через написание своего расширения. Как функция print_r объявлена где-то в ядре PHP, так и Ваша будет. Но это чрезмерно сложный и неудобный путь; нужно компилировать расширение как минимум под разные ОС.
    Если речь о том, чтобы не вставлять тело функции в каждый файл, то это решается или за счёт единой точки входа, или за счёт единого бутлоадера, что ведёт либо к автозагрузке классов, либо старому доброму require_once.
    Не упопмянули разве что такой экзотичный механизм как auto-prepend-file - но для Вашей задачи, имхо, тут больше минусов, чем плюсов
    Ответ написан
    Комментировать
  • Где изменить текст на кнопке в Битрикс?

    Если уверены, что всё перерыли - гляньте в базу. Особо умные туда иногда готовый html кладут. В Adminer есть поиск по всей базе, очень удобно.
    А иначе, если оно сделано через файлы локализации -только грепать все исходники, и в каждом найденном месте делать небольшую модификацию: "купить" - "купить1", "купить2" или что-то похожее. Потом очищать кеш Битрикса и смотреть.
    Потому что языковые фразы просто собираются в один огромный массив. Я недавно искал, какой умник испортил подпись "Имя" на штатной странице редактирования пользователя в админке. Нашёл в самописном модуле предыдущего подрядчика ( разумеется, это было не специально. Просто криворукость)
    Ответ написан
  • Как запомнить парольную фразу ssh ключа и не вводить её постоянно?

    вот в том шелле, в котором Вы делаете:
    ssh root@192.168.228.8
    перед этой командой сделайте:
    ssh-add -l
    Если список пустой - агент не запущен или к нему нет доступа, или ключ загружен в какую-то другую копию агента. Если в списке нет ключа - значит, он попросту не загружен :)
    Ответ написан
    Комментировать
  • Как сделать чтобы проект удалил папку с самим собой и на её место скопировал другую папку?

    я бы немного изменил Ваше решение:
    1) PHP скрипт загружает архив во временную папку и распаковывает там.
    2) по окончанию распаковки скрипт текущую папку переименовывает, например, в project_old , а временную папку помещает по пути /home/user/project
    3) затем можно запустить шелл скрипт, который удалит /home/user/project_old

    Может быть проблема, если что-то держит открытый файловый дескриптор на /home/user/project
    Тогда можно так:
    1) первый шаг оставляем без измнений
    2) во временной папке запускаем шелл скрипт, который очистит /home/user/project и перекидает туда всё из временной папки
    3) затем из основной папки запускаем скрипт ( хоть шелл, хоть php-шный), который удалит временную папку.
    Ответ написан
    Комментировать
  • Где привязать почтовый шаблон при оформлении заказа 1С-Битрикс?

    Скриншот какой-то бессмысленный.
    Вызов почтовых событий производится в коде. Коробочные события должны работать, очевидно, "из коробки". К почтовым событиям привязаны почтовые шаблоны; если шаблона нет (или нет шаблона для нужного сайта) - письма не будет.
    Ответ написан
  • Как убрать вывод даты?

    вот это:
    if($date_end=='0000-00-00'){
    			$date_end = date('Y-m-d', strtotime('+1 year'));
    		}

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

    <?php
    $string = "k1/k2/k3";
    $arr = [
    	'k1' => [
    		'k2' => [
    			'k3' => [
    				'k4' => 'v'
    				]
    			]
    		]
    ];
    
    $code = 'return $arr["'.str_replace('/', '"]["', $string).'"];';
    $result = eval($code);
    var_dump( $result );

    Конечно, eval() - зло. Но это зло ещё живое!
    Ответ написан
    6 комментариев
  • Каким образом можно получить свойства элементов инфоблока не используя getList?

    есть GetPropertyValues и GetPropertyValuesArray()

    Но вот быстрее ли оно...
    Могу лишь сказать, что Fetch() будет быстрее GetNext(), так что предпочтительнее использовать Fetch()
    Ответ написан
    Комментировать
  • Почему я получаю редирект на главную с любой детальной страницы?

    1. Находите в ядре функцию LocalRedirect
    2. Вставляете в неё первыми строчками вывод трассировки (debug_backtrace() ) и die;
    3. Если сработало - увидите, откуда был вызван редирект. Если не сработало - ищите другие варианты редиректа ( даже в .htaccess может быть какая-нибудь дичь )
    Ответ написан
  • Почему скрипт не работает через systemctl?

    Возможно, файл юнита слишком куцый, и с правами на файлы что-то не то?
    Вот такой вариант у меня сработал:
    test.sh:
    #!/bin/bash
    
    while true; do
        date +%Y-%m-%d_%H:%M:%S >> /home/myuser/test.log
        sleep 20
    done

    Юнит:
    [Unit]
    Description=kaBOOM
    After=network.target
    StartLimitIntervalSec=1
    
    [Service]
    Type=simple
    Restart=always
    RestartSec=5
    User=myuser
    ExecStart=/home/myuser/test.sh
    
    [Install]
    WantedBy=multi-user.target


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

    самое простое - посмотреть на время изменения файла, затем по логам веб-сервера проверить, что происходило в это время или раньше.
    проверить crontab.
    Ещё можно использовать inotify
    Ответ написан
    Комментировать
  • Как правильно написать RewriteRule?

    Вы слишком мудрите
    RewriteRule ^goods(/.+) /catalog/tovary$1 [L,R=301]
    Ответ написан
  • Есть что то проще чем php?

    Если без динамики, то Pug - отличный шаблонизатор
    Ответ написан
    Комментировать
  • Как выполнить поиск данных, если в базе данных указан шаблон?

    хранится он в виде W1K253???1???????, W1N253???1???????

    Насколько я вижу, эти шаблоны одинаковы, то есть:
    1. 6 фиксированных символов
    2. 3 произвольных символа
    3. 1 фиксированный символ
    4. 7 произвольных символов

    При этом произвольные символы обозначены знаком "?".
    Тогда можно сделать такой регуляркой:
    <?php
    $requestedVin = 'W1K25312311234567';
    $pattern = preg_replace('/^([A-Z\d]{6})[A-Z\d]{3}([A-Z\d])[A-Z\d]{7}$/', '$1???$2???????', $requestedVin);
    
    $query = "
            SELECT DISTINCT p.ID
            FROM {$wpdb->posts} p
            INNER JOIN {$wpdb->postmeta} pm ON p.ID = pm.post_id
            WHERE p.post_type = 'product'
              AND p.post_status = 'publish'
              AND pm.meta_key = 'vin'
              AND pm.meta_value = %s
            LIMIT 10 OFFSET %d
        ";
    
    $results = $wpdb->get_col($wpdb->prepare($query, $pattern, $offset));
    Ответ написан
    Комментировать
  • Как решить проблему сохранения данных?

    ichug, вообще не понимаю, почему Вы акцентируетесь на том, что существует коробочная версия. Такое ощущение, что Вы плохо представляете, как устроен Битрикс. Смотрите:
    1) есть облачный Битрикс24. Туда можно устанавливать "приложения", которые могут взаимодействовать со сторонними хостами через REST API
    2) есть коробочный "Битрикс: корпоративный портал". Туда ровно так же ставятся те же самые приложения.

    Если Вы рассматриваете ситуацию, когда коробочный корпортал стоит в закрытом контуре, изолирован от интернета, то в таких случаях Вам придётся договариваться с заказчиком об установке дополнительного сервера с Вашим ПО внутрь контура. Другого пути я не вижу. И тогда коробочный корпортал точно так же будет подключаться к этому доп.серверу.

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