Nikovit <Путешествия и разработка>

PhpStorm открыть недавно закрытый файл, комбинация клавиш

Для открытия недавно закрытого файла в PhpStorm достаточно нажать комбинацию клавиш ctrl + e, откроется окно со списком недавно закрытых файлов, в нем можно выбрать любой недавно закрытый файл.

phpstorm.png  

Битрикс редерикт всех страниц на https

В файле /site_dir/.htaccess вставляем
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
Пример:
htaccess.png  

Битрикс. Событие создание нового заказа.

AddEventHandler("sale", "OnOrderSave", "OrderMySave");
function OrderMySave($orderID, $fields, &$orderFields, $isNew){
if ($isNew) {
   //Полезный код
}
}

Выполнение скрипта битрикс в консоли

$_SERVER["DOCUMENT_ROOT"] = '/var/www/site.ru/';
$DOCUMENT_ROOT = $_SERVER["DOCUMENT_ROOT"];

define("NO_KEEP_STATISTIC", true);
define("NOT_CHECK_PERMISSIONS",true);
define("NO_AGENT_CHECK", true);
define('LID', "s1");
define("LANG", "ru");

require($_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/prolog_before.php");
set_time_limit(0);

// Полезный код

require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/epilog_after.php");

Битрикс. Получить список сработавщих скидок в корзине.

Получаем список скидок которые сработали в корзине:
<?php
$basket = \Bitrix\Sale\Basket::loadItemsForFUser(\Bitrix\Sale\Fuser::getId(), \Bitrix\Main\Context::getCurrent()->getSite());
$fuser = new \Bitrix\Sale\Discount\Context\Fuser($basket->getFUserId(true));
$discounts = \Bitrix\Sale\Discount::buildFromBasket($basket, $fuser);
$result = $discounts->getApplyResult(true);

echo '<pre>' . print_r($result['DISCOUNT_LIST'], 1) . '</pre>';
?>

Битрикс открыть пункт меню в новой вкладке

Для открытия пункта меню в новой вкладке битрикс достаточно добавить target=_blank

Пример файла меню с target=_blank
<?
$aMenuLinks = Array(
   Array(
      "Пункт меню", 
      "/company/test/", 
      Array(), 
      Array(), 
      "" 
   ),
   Array(
      "Пункт меню с target=_blank", 
      '/company/test2/" target=_blank',
      Array(), 
      Array(),
      "" 
   )
);
?>

Битрикс загрузить картинки по артикулу из файлов фотографий

Скрипт для загрузки фотографий товаров из файлов, файлы должны иметь вид артикул.jpg

Снабдил подробными комментариями в коде, если что то непонятно, пишите в комментарии))))

<?php
$_SERVER["DOCUMENT_ROOT"] = '/var/www/html/bx-site/';
require($_SERVER["DOCUMENT_ROOT"] . "bitrix/modules/main/include/prolog_before.php");

CModule::IncludeModule("iblock");

// Директория с картинками для загрузки
const DIR_IMG = '/var/www/html/bx-site/script/img-import/';

// Получем массив файлов
$img_arr_dir = scandir(DIR_IMG);

$arCode = array();
$i=0;
foreach ($img_arr_dir as $item){
    if($item == '.' or $item == '..'){
        continue;
    }
    $path = DIR_IMG . $item;
    $vendor_code = explode('.', $item);

    $arCode[$i]['code'] = $vendor_code[0];
    $arCode[$i]['path'] = $path;
    $i++;
}

//Получаем товары каталога одним запросом чтобы не дергать поодиночке
$resItemsList = CIBlockElement::GetList(
    array("ID", "NAME", "CML2_ARTICLE"),
    array("IBLOCK_ID"=>11, "CML2_ARTICLE" => array_keys($arCode)),
    false,
    false,
    array("ID", "NAME", "PROPERTY_CML2_ARTICLE")
);
// Преобразуем полученные товары в массив
$elements = array();
while ($element = $resItemsList->fetch())
{
    $elements[] = $element;
}

// Цикл которой определяет ID товара и сохраняет картинку в инфоблок
$el = new CIBlockElement;
foreach ($arCode as $item){
    // Находим ID товара по артиклу
    if($key = array_search($item["code"], array_column($elements, 'PROPERTY_CML2_ARTICLE_VALUE'))){
        echo 'Найден товар с артикулом ' . $item["code"] . ' ID: ' . $elements[$key]["ID"] . '<br>';
        //Сохраняем картинку в инфоблок
        $arLoadProductArray = Array(
            "DETAIL_PICTURE" => CFile::MakeFileArray($item["path"]),
        );
        if($el->Update($elements[$key]["ID"], $arLoadProductArray)){
            echo 'Изображение загруженно'. '<br>';
        } else {
            echo 'Изображение не загруженно'. '<br>';
        }
    } else {
        echo 'Товар с артикулом ' . $item["code"] . ' не найден' . '<br>';
    }
}

//echo '<pre>' . print_r($arCode, 1) . '</pre>';

require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/epilog_after.php");

windows символические ссылки

Команда создания символической ссылки в windows
mklink /j "путь, где будет создана символьная ссылка" "путь, где находятся исходный файл или папка"