• Почему не работает ЧПУ и как его починить?

    cyber-jet
    @cyber-jet
    1. То что настраивается в инфоблоке не имеет ни какого отношения к компоненту вывода bitrix:news, ЧПУ надо настраивать в выводе компонента bitrix:news.
    2. Нет ни какой необходимости вручную править файл urlrewrite.php в рамках штатного функционала Битрикс, правила в urlrewrite.php создаются автоматически при активированной функции ЧПУ в момент нажатия кнопки "Сохранить" в настройках компонента.
    3. The requested URL was not found on this server означает что не правильно настроена маршрутизация(RewriteEngine) на уровне сервера, и проблема скорее всего в файле .htaccess. В противном случае вам бы выдало содержимое 404 при некорректной настройке ЧПУ в Битрикс.

    Более ни чего подсказать не могу ибо у вас многосайтовость, а там есть нюансы, ещё возможно вам поможет эта статья в документации Битрикс, там есть дефолтное содержимое файла .htaccess
    Ответ написан
  • Вычисления datetime if()?

    cyber-jet
    @cyber-jet
    Мой рецепт, хранить в базе Unix Timestamp, time() - чтобы получить Unix timestamp в php. Но если так случилось что в базе дата хранится в формате date time, есть два способа это исправить, либо сделать запрос к базе с функцией конвертации SELECT UNIX_TIMESTAMP(dateTimeFieldName), либо воспользоваться функцией php strtotime($mysqltime) для конвертации в Unix timestamp.

    PS: "...отсчитать определённое время, например 30 минут чтобы сделать определённое действие..."
    if($date < date("Y-m-d H:i:s", time() - 1800) ) {
       // Ранее 1800 сек от текущего времени
    }

    или:
    if(strtotime($date) < (time() - 1800) ) {
       // Ранее 1800 сек от текущего времени
    }
    Ответ написан
  • Как пройти авторизацию через api сайта и внедрить это в код для парсинга?

    cyber-jet
    @cyber-jet
    В этом api должно быть сказано как осуществляется авторизация, т.е. кука или jwt-token в заголовке, которые нужно вместе с запросом отправлять.
    Ответ написан
    Комментировать
  • Как создать матрицу в php?

    cyber-jet
    @cyber-jet
    В этом блоке точно ошибки нет:
    $students = [
                ['name' => 'John', 'age' => 20, 'grade' => 'A'],
                ['name' => 'Jane', 'age' => 22, 'grade' => 'B'],
                ['name' => 'Alex', 'age' => 19, 'grade' => 'C']
          ];
    Ответ написан
    Комментировать
  • Как удалить из массива?

    cyber-jet
    @cyber-jet
    Если нужно в цикле удалить
    $arr[1]['one'] = "1";
    $arr[1]['two'] = "2";
    
    echo '<pre>';
    print_r($arr);
    echo '</pre>';
    
    // Array
    // (
    //     [1] => Array
    //         (
    //             [one] => 1
    //             [two] => 2
    //         )
    // )
    
    echo '<form method="POST">';
    foreach ($arr as $key => $row) {
    	foreach ($row as $val => $name) {
    		echo "<button name='del[$key]' value='$val'/>удалить $name</button>";
    	}
    }
    echo "</form>";
    
    if ($_POST && $_POST['del'] && is_array($_POST['del'])) {
    
    	echo '<pre>';
    	print_r($_POST['del']);
    	echo '</pre>';
    
    	// Array
    	// (
    	//     [1] => one
    	// )
    
    	foreach ($_POST['del'] as $k => $v) {
    		unset($arr[$k][$v]);
    	}
    }
    
    echo '<pre>';
    print_r($arr);
    echo '</pre>';
    
    // Array
    // (
    //     [1] => Array
    //         (
    //             [two] => 2
    //         )
    // )
    Ответ написан
  • Как исправить ошибку с бд?

    cyber-jet
    @cyber-jet
    Очевидно, что поле формы с множественной загрузкой файлов выдает массив, чтобы записать значения в базу надо всё-же :
    $uploaddir = "../uploads-gallery";
    
    foreach ($_FILES["images"]["error"] as $key => $error) {
        if ($error == UPLOAD_ERR_OK) {
            $tmp_name = $_FILES["images"]["tmp_name"][$key];
    
            // Функция basename() помогает защититься от атак на файловую систему;
            // иногда требуется дополнительная проверка или очистка имени файла
            $name = basename($_FILES["images"]["name"][$key]);
            move_uploaded_file($tmp_name, "$uploaddir/$name");
            ... функция записи в таблицу имени файла ($_FILES["images"]["name"][$key]);
        }
    };
    Ответ написан
    Комментировать
  • Компилируемый ЯП в стилистике JS есть?

    cyber-jet
    @cyber-jet
    Rust :)
    Ответ написан
    Комментировать
  • Fetch как передать строку в php?

    cyber-jet
    @cyber-jet
    Если нужно получить только строку:
    const photo = "https://blablabla.ru/sss.jpg?us=22&qq=11";
    fetch("https://example.site/example/example.php", {
      method: "POST",
      body: photo,
    });

    $string = file_get_contents("php://input");
    echo $string;
    Ответ написан
    Комментировать
  • Как сделать перемещение по странице с помощью перетаскивания?

    cyber-jet
    @cyber-jet
    События ondragstart, на тачскинах событие другое, TouchEvent.
    Ответ написан
  • Как добавить чекбокс в пользовательский тип свойства инфоблока?

    cyber-jet
    @cyber-jet
    Можно завести свойство "список" - "да", "нет", отображать как флажки или радио. Если в паблике надо как чекбокс, нужно модифицировать шаблон формы.
    Ответ написан
    Комментировать
  • Как сверстать данный фон(background)?

    cyber-jet
    @cyber-jet
    Не знаю как у вас там по верстке, сделал величины относительно контейнера, лучше сделать в абсолютных величинах:
    <div class="container">
      <div class="fig"></div>
    </div>


    .container {
      position: relative;
      border: 1px solid #000;
      width: 800px; 
      height: 400px;
      overflow: hidden;
    }
    .fig {
      position: absolute;
      top: 0;
      left: -105%;
      width: 150%; 
      height: 150%;
      transform: skew(-20deg, -25deg);
      background: linear-gradient(180deg, #C91C04 0%, #4B0900 100%);
    }
    Ответ написан
    2 комментария
  • Почему не срабатывает регистрация пользователя в битрикс?

    cyber-jet
    @cyber-jet
    Если значения полей формы собирает JavaScript в браузере, скорее всего через интерфейс FormData(), туда не попадает значение кнопки submit. При синхронной обработке на стороне сервера такой проблемы бы не было. Часто так бывает что у формы есть несколько кнопок сабмит с разными именами и(или) значениями, внутри обработчика события доступ к сработавшей кнопке можно получить через event.submitter.
    document.getElementById("form").addEventListener("submit", (event) => {
      event.preventDefault();
      let data = new FormData(event.target);
      if (event.submitter) {
        data.append(event.submitter.name, event.submitter.value);
      }
    
      // ...скрипт отправки формы
    });
    Ответ написан
    Комментировать
  • Как получить данные из Promise?

    cyber-jet
    @cyber-jet
    Ваша функция ни чего не возвращает, а следуя логике вашего вопроса, должна вернуть результат после выполнения промиса:
    function one() {
      return fetch(
        "https://api.github.com/repos/javascript-tutorial/en.javascript.info/commits"
      )
        .then((res) => res.json())
        .then((data) => data);
    }

    и чтобы дождаться выполнения обещания, а потом показать результат:
    one().then(console.log);

    PS: ключевое async тут лишнее, так как функция и так возвращает объект Promise.
    Ответ написан
    Комментировать
  • Как отображать элементы в зависимости от масштаба содержащего их блока?

    cyber-jet
    @cyber-jet
    Самый просто способ, если величина масштаба известна, захардкодить условия отображения: галактики -> звёзды -> планеты и т.д.
    Ответ написан
  • Как нарисовать изогнутую линию на css?

    cyber-jet
    @cyber-jet
    Не изогнутую а наклонную, свойство transform: rotate(5deg) в данном случае повернёт контейнер со всем содержимым на 5 градусов по часовой вокруг центра, если нужно против часовой, используется отрицательное значение.
    Ответ написан
    Комментировать
  • Как по ajax поменять название кнопки?

    cyber-jet
    @cyber-jet
    Потому что json это объект, а вы работаете с ним как с массивом. Если у вас в ответе и правда json, то нужно так:

    if(json.success) {
       ... json.total_cart...
    }
    Ответ написан
    Комментировать
  • Как с помощью php отдать react?

    cyber-jet
    @cyber-jet
    На проде обычно js код приложения проходит обфускацию и минификацию, понятно что это от не гарантия, но просто так открыть код и причитать не получится.

    В SPA всё приложение отдается целиком, дальше общается с бэком через api, получая только данные, в зависимости от состояния и полученных данных приложение отображает информацию. Т.е. в приложении изначально данных нет. Более того, приложение не обязательно должно общаться только с одним бэкм(доменом), оно может слать запросы куда угодно, где будут готовы дать ему ответ, таким образом реализуется структура микросервисов, когда каждый сервис выполняет свою задачу независимо от другого. Например учётные записи пользователей, номенклатура, остатки и цены, заказы - это всё могут быть независимые сервисы.

    Если не хотите всем подряд светить js файл с аппом, сделайте стандартную страницу авторизации на php, авторизованным пользователям в ответ отдавайте js файл приложения, который после получения будет запускаться.
    Ответ написан
    Комментировать
  • Почему вылазит ошибка self.querySelector(...) is null?

    cyber-jet
    @cyber-jet
    Посмотрите что в self присваивается, выведете в консоль consol.log(self).
    Ответ написан
    Комментировать
  • Как решить проблему с рассинхронизацией данных при вызове функции?

    cyber-jet
    @cyber-jet
    Ни какого рассинхрона не происходит, просто данные передаются в одну сторону, самое простое, в TheAdminPagination.vue повесить вотчер на totalPages, если меняется, сбрасывать на 1. В данном коде передавать prop currentPage из родителя не имеет ни какого смысла.
    Ответ написан
    1 комментарий