Блог


Как удалить элемент по идентификатору в jQuery

Синтаксис:


$("#myelementid").remove();


Проверка на полную загрузку документа в jQuery

Иногда в jQuery требуется проверить, загружен ли наш документ полностью.
Поможет нам в этом метод ready:



$(document).ready(function() {
     // Код
});

Новость отображается на сайте только после обновления кеша (в Битриксе)

Ситуация:
При добавлении новости она не отображается сразу, а только после обновления кеша, что жутко не удобно.

Решение:
Скорее всего отключен Управляемый кеш. Проверить и включить его можно в "Настройках продукта" > "Автокеширование" > "Управляемый кеш".

Рекомендую также очистить текущий кеш ("Настройки продукта" > "Автокеширование" > "Очистка файлов кеша").



Как в VS Code установить русский язык

Переходим в "Расширения" (Ctrl+Shift+X) и вписываем в поисковой строке запрос: "Russian Language".

Видим дополнение (иконка с глобусом) и нажимаем кнопку установки.
После перезапуска VS Code весь интерфейс будет на русском языке.

Где в VS Code настраивать горячие клавиши

Достаточно банальная вещь, но почему-то по началу полез в общие настройки ("Настройки" > "Параметры") и там не нашел.


Сами же настройки горячих клавиш можно найти в "Настройки" > "Сочетание клавиш".



JCCatalogSocnetsComments is not defined

Ситуация:
Интернет магазин. Устанавливаю комментарии для карточки товара (стандартный компонент bitrix:catalog.comments).

Сам компонент пытаюсь вставить в catalog.element. Шаблон полностью кастомный и сделан с нуля.

В итоге комментарии для администратора работают, для других пользователей нет. Загадка.

Решение:
Первым делом нажимаем F12 чтобы проверить, что говорит консоль разработчика. Видим там ошибку:



Видим, что есть неподключенные библиотеки. Подключаем нужную:


CJSCore::Init(array('popup'));
После внесения этой строки комментарии заработали корректно.

Как сделать пробел-разделитель в числах ценах на JS

Появилась задача на jQuery отобразить цену с тысячным разделением формата 100 000 руб.
На PHP для решения подобного использую number_format(). 

Делаем на JS:


 Intl.NumberFormat('ru-RU').format(100000);
Результат:
100 000

Как подключить Font Awesome на сайт

Подключаем популярный набор иконок Font Awesome для нашего сайта.

Подключить CSS с внешнего сайта (CDN подключение):



<link rel="stylesheet" href="https://pro.fontawesome.com/releases/v5.10.0/css/all.css">


Использовать:

<i class="far fa-address-card"></i>
Примерный результат на странице:


HTTP Error 500 при установке через restore.php

Пытаюсь установить Битрикс на хостинге и получаю в браузере ошибку HTTP Error 500. Панель управления хостингом FastPanel, VPS. Все по-умолчанию, никаких кастомных конфигураций не делал.



Решение:
Переключить в хостинг панели версию PHP на более новую версию (в данном случае переключил с php54 на php74) и всё заработало.


[ОШИБКА] IP адрес клиента изменился, продолжение невозможно.

Распространенная ошибка при установке Битрикс с помощью restore.php:
Ошибка! IP адрес клиента изменился, продолжение невозможно.

Причина:
Возможно данный файл restore.php уже был использован на другой установке. Строчки 9-11 в данном файле как раз говорят об этом.



Решение:
Удалить данные строчки, сохранить файл, запустить установку заново.

[ОШИБКА] Failed to load resource: the server responded with a status of 403 (Forbidden)

Битрикс на OpenServer.
В админке, в рубрике "Пользователи", словил раскошенный вид, как будто не загрузились CSS стили.

По F12 обнаружены масса ошибок вида:
Failed to load resource: the server responded with a status of 403 (Forbidden)



Причина:
В конфигах Apache на OpenServer включен запрет на доступ к папкам с точкой в названии.

Решение:

  1. Найти нужный нам файл конфига. В настройках OpenServer видно какую конфигурацию мы используем.



  2. Найти в найденном файле-конфиге данный блок с настройкой:



  3.  Закомментировать код:



  4. Перезагрузить OpenServer. 

[ОШИБКА] Warning: "continue" targeting switch is equivalent to "break". Did you mean to use "continue 2"?

Распаковал старый архив проекта на Битрикс и словил ошибку в админке, которая появляется в инфоблоках:
Warning: "continue" targeting switch is equivalent to "break". Did you mean to use "continue 2"?

Причина:
Слишком новый PHP.

Решение:
Сделать откат версии PHP. Поставил в настройках php5.6 (был 7+) и всё заработало.




Сделать заглавные буквы в ФИО

Клиент прислал массив пользователей системы для импорта. Единственная загвоздка была в том, что ФИО все были написаны "капсом".

Примерно так:
ИВАНОВ ИВАН ИВАНОВИЧ
ПЕТРОВА МАРИЯ ПЕТРОВНА

Появилась задача привести их все в нормальный вид.

Решение:
Помогла функция mb_convert_case(); (производит смену регистра символов в строке).


<?
$fio = "ПЕТРОВА МАРИЯ ПЕТРОВНА";
$fio = mb_convert_case($fio, MB_CASE_TITLE, 'UTF-8');
echo $fio; // Петрова Мария Петровна
?>

Отсутствие Категорий в списке в "Менеджере идей" Битрикс

В сервисе "Менеджер Идей" есть один небольшой недочет, который сбивает с толку. В некоторых случаях в списке Категорий пустота, хотя категории добавлены, инфоблок категорий и блог идей настроены, все права проставлены.
  

Найдена причина и решение:
В категориях отсутствуют коды, они обязательны у папок.
Сам же Битрикс разрешает заводить Категории без кода.


[ОШИБКА] Filename out of range

Клиент закачал в папку на сервере PDF-файл с кириллицей в названии файла и получил ошибку вида:
Notice: Constant DBPersistent already defined in /var/www/project/data/www/site.rus/bitrix/php_interface/dbconn.php on line 4 Filename is out of range.

Решение:
Отредактировать .htaccess, убрав оттуда ненужные на Linux системе строчки кода.


RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteCond %{REQUEST_FILENAME} [\xC2-\xDF][\x80-\xBF] [OR]
RewriteCond %{REQUEST_FILENAME} \xE0[\xA0-\xBF][\x80-\xBF] [OR]
RewriteCond %{REQUEST_FILENAME} [\xE1-\xEC\xEE\xEF][\x80-\xBF]{2} [OR]
RewriteCond %{REQUEST_FILENAME} \xED[\x80-\x9F][\x80-\xBF] [OR]
RewriteCond %{REQUEST_FILENAME} \xF0[\x90-\xBF][\x80-\xBF]{2} [OR]
RewriteCond %{REQUEST_FILENAME} [\xF1-\xF3][\x80-\xBF]{3} [OR]
RewriteCond %{REQUEST_FILENAME} \xF4[\x80-\x8F][\x80-\xBF]{2}
RewriteCond %{REQUEST_FILENAME} !/bitrix/virtual_file_system.php$
RewriteRule ^(.*)$ /bitrix/virtual_file_system.php [L]

Что такое PSR

PSR - PHP Standard Recommendation (Стандартные рекомендации PHP).

В двух словах - это рекомендуемые стили кодирования, своего рода правила хорошего тона.
Придерживаться их - дело каждого программиста, это просто рекомендации.

Примеры PSR:

  1. php-файл надо начинать с <?php, а не с <? (лично я использую второй вариант, и как герой популярного сериала "Кремниевая Долина" экономлю три байта кода).
  2. файл должен быть в кодировке UTF-8 без BOM
  3. для коротких echo строчек использовать <?= ?>
  4. если файл содержит только php код без html, то в конце файла следует опускать ?>
  5. файлы PHP должны использовать окончание (перевод) строки в  формате Unix LF
  6. мой любимый пункт: код должен использовать отступ в 4 пробела для каждого уровня отступа и не должен использовать табуляцию для отступа (сам я кодирую с табуляцией)

Автоматическая установка LF / CRLF при создании нового файла в VS Code

Прописываем строчку в settings.json:

LF (Linux формат):


   "files.eol": "\n",
CRLF (Windows формат):

   "files.eol": "\r\n",

Недочеты VS Code (плагин PHP Intelephense)

Решил составить список недочетов (лично для меня) плагина PHP Intelephense.

  1. Константы (объявленные в других файлах) определяет как ошибки
  2. Автоматически срезает закрывающий тег ?>  у PHP файлов.
    Примечание:
    На самом деле это нормально, что редактор убирает эту строчки, так как есть формат PSR (а именно psr-12) и PHP Intelephense его придерживается. Причина неудобства этой срезки (опять же для меня) в том, что не нашел управляющей настройки.

Добавить пагинацию в Битрикс (API)

Добавляем пагинацию к GetList. Первичный базовый код:



$res = CIBlockElement::GetList(
   array(), 
   $arFilter, 
   false, 
   array("nPageSize" => 10), 
   $arSelect);

while ($ob = $res->GetNextElement()) {
   $arFields = $ob->GetFields();
   echo '<pre>';
   print_r($arFields);
   echo '</pre>';
}


Нужно добавить два метода NavStart и NavPrint. Код с доработками:


$res = CIBlockElement::GetList(
   array(), 
   $arFilter, 
   false, 
   array("nPageSize" => 10), 
   $arSelect);

$res->NavStart(0); // разбивает результат выборки на страницы
while ($ob = $res->GetNextElement()) {
   $arFields = $ob->GetFields();
   echo '<pre>';
   print_r($arFields);
   echo '</pre>';
}
echo $res->NavPrint("Сотрудники"); // выводит ссылки для постраничной навигации


Как распаковать многотомный архив Bitrix

Иногда распаковка с помощью стандартного метода через restore.php может приводить к ошибкам.

Многие пытаются распаковать архив Битрикс вручную (например с помощью архиватора 7zip), но это не удается, так как расширения сформированные Битрикс отличаются от общепринятых.

Расширения в Битрикс:
name.tar.gz
name.tar.gz.1
name.tar.gz.2
name.tar.gz.3

Нужно:
name.tar.gz.001
name.tar.gz.002
name.tar.gz.003
name.tar.gz.003

Решение:

  1. Переименовать все файлы, начиная с первого. Расширение первого файла переименовать в gz.001
  2. Расширения последующих файлов переименовать в gz.002gz.003 и тд
  3. Использовать 7zip, нажав правую кнопку мыши на первый файл



Дневник 81 - 100 из 293
Начало | Пред. | 3 4 5 6 7 | След. | Конец