Follow along with the video below to see how to install our site as a web app on your home screen.
Примечание: This feature may not be available in some browsers.
У меня всегда наготове есть такой файл с этим кодом, который служит как гарант сделки.
Если что-то пойдет не так, можно зайти на сайт под админом и вернуть всё что сделано непосильным трудом.
Не пускай никого в свою комнату,вот именно по этому я никогда ни пускаю подобных тебе на сайт, только дамп, полное комментирование доработок и перенос непосредственно того что нужно
как показывает практика сколько подобным тебе не плати все мало
<?
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/header.php");
function getAllPecomCities()
{
global $APPLICATION;
$data = array();
$cacheId = "SaleDeliveryPecomCities";
if(empty($data))
{
$http = new \Bitrix\Main\Web\HttpClient(array(
"version" => "1.1",
"socketTimeout" => 30,
"streamTimeout" => 30,
"redirect" => true,
"redirectMax" => 5,
));
$jsnData = $http->get("http://www.pecom.ru/ru/calc/towns.php");
$errors = $http->getError();
if (!$jsnData && !empty($errors))
{
$strError = "";
foreach($errors as $errorCode => $errMes)
$strError .= $errorCode.": ".$errMes;
\CEventLog::Add(array("SEVERITY" => "ERROR", "AUDIT_TYPE_ID" => "SALE_DELIVERY", "MODULE_ID" => "sale", "ITEM_ID" => "PECOM_GET_TOWNS", "DESCRIPTION" => $strError,));
}
$data = json_decode($jsnData, true);
if(strtolower(SITE_CHARSET) != 'utf-8')
{
$data = $APPLICATION->ConvertCharsetArray($data, 'utf-8', SITE_CHARSET);
if(is_array($data))
{
foreach($data as $key => $value)
{
$newKey = $APPLICATION->ConvertCharset($key, 'utf-8', SITE_CHARSET);
$data[$newKey] = $value;
unset($data[$key]);
}
}
}
if(!is_array($data))
$data = array();
}
return $data;
}
function mapLocation($locationId)
{
$cityName = getCityNameFromLocationId($locationId);
if(!$cityName)
return array();
$data = array();
if(empty($data))
{
$pecCities = getAllPecomCities();
$data = array();
foreach($pecCities as $key => $cities)
{
foreach($cities as $smallCityKey => $smallCityName)
{
$pos = strpos($smallCityName, $cityName);
if($pos !== false && (strlen($cityName) == strlen($smallCityName) || (substr($smallCityName,$pos+strlen($cityName), 1) == " " && ($pos == 0 || substr($smallCityName,$pos-1, 1) == " ")) ))
{
$data[$smallCityKey] = $smallCityName;
}
}
}
}
return $data;
}
function getCityNameFromLocationId($locationId)
{
$loc = \CSaleLocation::GetById($locationId);
return isset($loc["CITY_NAME_LANG"]) ? $loc["CITY_NAME_LANG"] : false;
}
function createCalcParams($location, $width, $lenght, $height, $weight)
{
$i=0;
$locationTo = "";
$arLocation = mapLocation($location);
if(count($arLocation) == 1)
{
$locationTo = key($arLocation);
}
$volume=($lenght/1000)*($width/1000)*($height/1000);
$volume=number_format($volume, 2, '.', '');
$itemsStr .= 'places['.$i.'][]='.strval($width/1000).
'&places['.$i.'][]='.strval($lenght/1000).
'&places['.$i.'][]='.strval($height/1000).
'&places['.$i.'][]='.strval($volume).
'&places['.$i.'][]='.strval($weight/1000).
'&places['.$i.'][]=0'.
'&places['.$i.'][]=0';
$insurance = "0";
$result = $itemsStr.
'&take[town]=-446'.//$this->arConfig["CITY_DELIVERY"]["VALUE"].
'&take[tent]=0'.
'&take[gidro]=0'.
'&take[speed]=0'.
'&take[moscow]=0'.
'&deliver[town]='.$locationTo.
'&deliver[tent]=0'.
'&delideliver[gidro]=0'.
'&deliver[speed]=0'.
'&deliver[moscow]=0'.
'&plombir=0'.
'&strah='.$insurance.
'&ashan=0';
return $result;
}
function send($strParams)
{
$http = new \Bitrix\Main\Web\HttpClient(array(
"version" => "1.1",
"socketTimeout" => 30,
"streamTimeout" => 30,
"redirect" => true,
"redirectMax" => 5,
));
$jsnData = $http->post("http://www.pecom.ru/bitrix/components/pecom/calc/ajax.php", $strParams);
$errors = $http->getError();
if (!$jsnData && !empty($errors))
{
$strError = "";
foreach($errors as $errorCode => $errMes)
$strError .= $errorCode.": ".$errMes;
\CEventLog::Add(array(
"SEVERITY" => "ERROR",
"AUDIT_TYPE_ID" => "SALE_DELIVERY",
"MODULE_ID" => "sale",
"ITEM_ID" => "PECOM_CALCULATOR_SEND",
"DESCRIPTION" => $strError,
));
}
return $jsnData;
}
function parseCalcResult($jsonInfo)
{
global $APPLICATION;
$arInfo = json_decode($jsonInfo,true);
if(is_array($arInfo) && !empty($arInfo))
{
if(isset($arInfo["auto"][2]))
{
$price = 0;
$price += intval($arInfo["auto"][2]);
//if(isset($arInfo["take"][2]) && \CDeliveryPecom::isConfCheckedVal($this->arConfig, 'SERVICE_TAKE_ENABLED'))
// $price += intval($arInfo["take"][2]);
//if(isset($arInfo["deliver"][2]) && \CDeliveryPecom::isConfCheckedVal($this->arConfig, 'SERVICE_TAKE_ENABLED'))
// $price += intval($arInfo["deliver"][2]);
foreach($arInfo as $key => $value)
if(substr($key,0,3) == "ADD")
$price += intval($arInfo[$key][2]);
$arResult = array(
'RESULT' => 'OK',
'VALUE' => $price,
);
if(isset($arInfo["periods"]))
{
$str = explode("<br>", $arInfo["periods"]);
if(isset($str[0]))
{
$days = explode(":",$str[0]);
if(isset($days[2]) && strlen($days[2]) > 0)
$arResult["TRANSIT"] = $days[2];
}
}
}
else
{
if(isset($arInfo["error"]))
{
$error = implode("<br>", $arInfo["error"]);
if(strtolower(SITE_CHARSET) != 'utf-8')
$error = $APPLICATION->ConvertCharset($error, 'utf-8', SITE_CHARSET);
}
else
{
$error = GetMessage("SALE_DH_PECOM_ERROR");
}
$arResult = array(
'RESULT' => 'ERROR',
'TEXT' => $error
);
}
}
else
{
$arResult = array(
'RESULT' => 'ERROR',
'TEXT' => GetMessage("SALE_DH_PECOM_ERROR_NO_RESULTS")
);
}
return $arResult;
}
$res=createCalcParams($_REQUEST["loc"], $_REQUEST["w"], $_REQUEST["h"], $_REQUEST["h"], $_REQUEST["ww"]);
$data=send($res);
$result=parseCalcResult($data);
?>
ТК ПЭК: <b><?=$result["VALUE"];?> р.</b>
<?$APPLICATION->IncludeComponent(
"bitrix:sale.ajax.locations",
"popup",
Array(
"AJAX_CALL" => "N",
"ALLOW_EMPTY_CITY" => $_REQUEST["ALLOW_EMPTY_CITY"],
"CITY_INPUT_NAME" => "CITY_INPUT",
"CITY_OUT_LOCATION" => $_REQUEST["CITY_OUT_LOCATION"],
"COUNTRY" => intval($_REQUEST["COUNTRY"]),
"COUNTRY_INPUT_NAME" => "COUNTRY_INPUT",
"ONCITYCHANGE" => "calculate();",
"REGION" => intval($_REQUEST["REGION"]),
"REGION_INPUT_NAME" => "REGION_INPUT",
"ZIPCODE" => "ZIP_INPUT"
),
null,
Array(
'HIDE_ICONS' => 'Y'
)
);
?>
<div id="calc_result"><img src="/images/21.gif" id="load_gif" style="display: none;" /></div>
<script>
var w='<?=$arResult["CATALOG_WIDTH"]?>';
var h='<?=$arResult["CATALOG_HEIGHT"]?>';
var l='<?=$arResult["CATALOG_LENGTH"]?>';
var ww='<?=$arResult["CATALOG_WEIGHT"]?>';
function calculate() {
var location=$("#CITY_INPUT").val();
$("#load_gif").show();
$.get("/include/calc.php", "loc="+location+"&w="+w+"&h="+h+"&l="+l+"&ww="+ww, function (result) {
$("#calc_result").html(result);
});
}
</script>
<script>
function setRegion() {
$("select[name=REGION_ORDER_PROP_5CITY_ORDER_PROP_5]").find('option[value=50]').attr("selected", "selected");
$("select[name=REGION_ORDER_PROP_5CITY_ORDER_PROP_5]").change();
}
function setCity() {
$("#CITY_ORDER_PROP_5").find('option[value=672]').attr("selected", "selected");
$("#CITY_ORDER_PROP_5").change();
}
$(document).ready(function(){
<?
if($APPLICATION->GetCurPage()=="/bitrix/admin/sale_order.php"):
?>
$("#adm-title").after('<a href="orders_to_excel.php" style="display: inline-block; margin-right: 20px; margin-bottom: 20px; width: 150px;" class="adm-btn adm-btn-save" title="Выгрузить заказы в форму">Эксель для курьеров</a>');
$("#adm-title").after('<a href="orders_onmap.php" style="display: inline-block; margin-right: 20px; margin-bottom: 20px; width: 150px;" class="adm-btn adm-btn-save" title="Заказы на карте">Заказы на карте</a>');
$("#adm-title").after('<a href="orders_print.php" style="display: inline-block; margin-right: 20px; margin-bottom: 20px; width: 150px;" class="adm-btn adm-btn-save" title="Печать заказов">Печать заказов</a>');
$("#adm-title").after('<a href="orders_stiker.php" style="display: inline-block; margin-right: 20px; margin-bottom: 20px; width: 150px;" class="adm-btn adm-btn-save" title="Печать заказов">Печать этикеток</a>');
<?endif;?>
<?
if($APPLICATION->GetCurPage()=="/bitrix/admin/order_new_new.php"):
?>
$("#ORDER_PROP_5CITY_ORDER_PROP_5").find('option[value=5]').attr("selected", "selected");
$("#ORDER_PROP_5CITY_ORDER_PROP_5").change();
setTimeout('setRegion()',500);
setTimeout('setCity()',1000);
<?endif;?>
$("div.base_price_title").hide();
});
</script>
AddEventHandler("search", "BeforeIndex", "BeforeIndexHandler");
function BeforeIndexHandler($arFields)
{
if(!CModule::IncludeModule("iblock")) // подключаем модуль
return $arFields;
if($arFields["MODULE_ID"] == "iblock")
{
$path=Array();
$title="";
$res = CIBlockElement::GetByID($arFields["ITEM_ID"]);
if($ob = $res->GetNextElement())
{
$prop=$ob->GetProperties();
}
$db_props = CIBlockElement::GetProperty( // Запросим свойства индексируемого элемента
$arFields["PARAM2"], // BLOCK_ID индексируемого свойства
$arFields["ITEM_ID"], // ID индексируемого свойства
array("sort" => "asc"), // Сортировка (можно упустить)
Array("CODE"=>"ARTICLE")); // CODE свойства (в данном случае артикул)
if($ar_props = $db_props->Fetch())
{
$arFields["TITLE"] = $arFields["TITLE"]." ".$prop["CML2_ATTRIBUTES"]["VALUE"][0]." ".$ar_props["VALUE"];
$arFields["BODY"] = "";
}
}
return $arFields; // вернём изменения
}
Вопрос - нужно ли этот файл подключать куда-нибудь? Залил его, очистил кэш, а ничего в админке не изменилось...Кратенькое решение набросал сегодня, думаю многим будет полезно.
Создаем файлик /bitrix/php_interface/admin_header.php
В примере код файлика используется для выбора автоматом местоположения при создании заказа из админки и добавление 4х кнопок с разными задачами в списке заказов
PHP:<script> function setRegion() { $("select[name=REGION_ORDER_PROP_5CITY_ORDER_PROP_5]").find('option[value=50]').attr("selected", "selected"); $("select[name=REGION_ORDER_PROP_5CITY_ORDER_PROP_5]").change(); } function setCity() { $("#CITY_ORDER_PROP_5").find('option[value=672]').attr("selected", "selected"); $("#CITY_ORDER_PROP_5").change(); } $(document).ready(function(){ <? if($APPLICATION->GetCurPage()=="/bitrix/admin/sale_order.php"): ?> $("#adm-title").after('<a href="orders_to_excel.php" style="display: inline-block; margin-right: 20px; margin-bottom: 20px; width: 150px;" class="adm-btn adm-btn-save" title="Выгрузить заказы в форму">Эксель для курьеров</a>'); $("#adm-title").after('<a href="orders_onmap.php" style="display: inline-block; margin-right: 20px; margin-bottom: 20px; width: 150px;" class="adm-btn adm-btn-save" title="Заказы на карте">Заказы на карте</a>'); $("#adm-title").after('<a href="orders_print.php" style="display: inline-block; margin-right: 20px; margin-bottom: 20px; width: 150px;" class="adm-btn adm-btn-save" title="Печать заказов">Печать заказов</a>'); $("#adm-title").after('<a href="orders_stiker.php" style="display: inline-block; margin-right: 20px; margin-bottom: 20px; width: 150px;" class="adm-btn adm-btn-save" title="Печать заказов">Печать этикеток</a>'); <?endif;?> <? if($APPLICATION->GetCurPage()=="/bitrix/admin/order_new_new.php"): ?> $("#ORDER_PROP_5CITY_ORDER_PROP_5").find('option[value=5]').attr("selected", "selected"); $("#ORDER_PROP_5CITY_ORDER_PROP_5").change(); setTimeout('setRegion()',500); setTimeout('setCity()',1000); <?endif;?> $("div.base_price_title").hide(); }); </script>
Вопрос - нужно ли этот файл подключать куда-нибудь? Залил его, очистил кэш, а ничего в админке не изменилось...
<?php
$GLOBALS["DB"]->ShowSqlStat = true;
$application = \Bitrix\Main\Application::getInstance();
$connection = $application->getConnection();
$connection->startTracker();
$sqlTracker = $connection->getTracker();
//CIBlockElement::GetList() Или еще какой то свой код c sql запросами сюда
var_dump($sqlTracker->getQueries());
$connection->stopTracker();
$GLOBALS["DB"]->ShowSqlStat = false;
?>