| Цитата |
|---|
| Евгений Жуков написал: Штатные шаблоны не рассчитаны на этот режим. Аякс-режим в компонентах - реликт тех времен, когда в шаблонах практически не было jscript. |
|
|||
|
|
|
|
|||
|
|
|
use Bitrix\Sale; use Bitrix\Main\Loader; AddEventHandler("main", "OnBeforeUserLogin", ["CUserEx", "OnBeforeUserLogin"]); AddEventHandler("main", "OnBeforeUserRegister", ["CUserEx", "OnBeforeUserRegister"]); AddEventHandler("main", "OnBeforeUserRegister", ["CUserEx", "OnBeforeUserUpdate"]); AddEventHandler("sale", "OnOrderNewSendEmail", "orderNewSendEmail"); function orderNewSendEmail($id, &$eventName, &$arFields) { $arFields['EMAIL_BODY'] = ""; } class CUserEx { function OnBeforeUserLogin($arFields) { $filter = ["EMAIL" => $arFields["LOGIN"]]; $rsUsers = CUser::GetList(($by = "LAST_NAME"), ($order = "asc"), $filter); if ($user = $rsUsers->GetNext()) { $arFields["LOGIN"] = $user["LOGIN"]; // $arr = explode("@",$arFields["EMAIL"]); // $arFields["LOGIN"] = $arr[0]; } else { // $arFields["LOGIN"] = ""; //- для запрета авторизации по Логину } } function OnBeforeUserRegister($arFields) { $arFields["LOGIN"] = $arFields["EMAIL"]; } } function OnOrderNewSendEmailRWF($ID, &$eventName, &$arFields) { return false; $order = Sale\Order::load($ID); $deliveryCollection = $order->getShipmentCollection(); foreach ($deliveryCollection as $delivery) { $arDeliv = CSaleDelivery::GetByID($delivery->getDeliveryId()); $arFields['ORDER_LIST'] .= '<br>'.strip_tags($arDeliv['DESCRIPTION']); $delivery_price = $order->getDeliveryPrice(); $delivery_currency = $order->getCurrency(); if(LANGUAGE_ID == 'ru') { $arFields['ORDER_LIST'] .= ' - 1 pcs.: '.CurrencyFormat($delivery_price, $delivery_currency); } else { $arFields['ORDER_LIST'] .= ' - 1 шт.: '.CurrencyFormat($delivery_price, $delivery_currency); } break; } $first_product_name = ""; $city_name = ""; $dbBasketItems = CSaleBasket::GetList([ "NAME" => "ASC", "ID" => "ASC" ], [ "LID" => SITE_ID, "ORDER_ID" => $ID ], false, false, ["ID", "CALLBACK_FUNC", "MODULE", "PRODUCT_ID", "QUANTITY", "PRODUCT_PROVIDER_CLASS"]); if ($arItems = $dbBasketItems->Fetch()) { //var_dump($arItems); $res = CIBlockElement::GetByID($arItems["PRODUCT_ID"]); if ($ar_res = $res->GetNext()) { $first_product_name = $ar_res['NAME']; } } //var_dump($arFields); $db_props = CSaleOrderPropsValue::GetOrderProps($ID); while ($arProps = $db_props->Fetch()) { if ($arProps["PROP_ID"] != 5) { continue; } $city_name = $arProps["VALUE"]; //var_dump($arProps); } $arFields["FPNAME"] = $first_product_name; $arFields["SITY_NAME"] = $city_name; //exit; $newDate = split(' ', $arFields["ORDER_DATE"]); $arFields["ORDER_DATE"] = $newDate[0]; //file_put_contents(dirname(__FILE__)."/logir.log", print_r($arFields, true), FILE_APPEND); } AddEventHandler("sale", "OnOrderNewSendEmail", "OnOrderNewSendEmailRWF", 1); if (isset($_GET['noinitRealweb']) && !empty($_GET['noinitRealweb'])) { $strNoInit = strval($_GET['noinitRealweb']); if ($strNoInit == 'N') { if (isset($_SESSION['NO_INIT'])) { unset($_SESSION['NO_INIT']); } } elseif ($strNoInit == 'Y') { $_SESSION['NO_INIT'] = 'Y'; } } if (!(isset($_SESSION['NO_INIT']) && $_SESSION['NO_INIT'] == 'Y')) { $classesDir = str_replace($_SERVER["DOCUMENT_ROOT"], '', __DIR__)."/classes"; CModule::AddAutoloadClasses('', [ 'SiteWrapper' => '/local/php_interface/classes/SiteWrapper.php', 'CUserTypeHLHtmlField' => '/local/php_interface/classes/CUserTypeHLHtmlField.php', ]); AddEventHandler("main", "OnProlog", ["SiteWrapper", "setSortCatalogField"], 10); AddEventHandler("main", "OnProlog", ["SiteWrapper", "setCookieCatalogView"], 10); AddEventHandler("main", "OnProlog", ["SiteWrapper", "isDefaultPage"], 10); AddEventHandler('main', 'OnUserTypeBuildList', ['CUserTypeHLHtmlField', 'GetUserTypeDescription'], 6000); } // AddEventHandler("catalog", "OnGetOptimalPrice", "MyGetOptimalPrice"); // global $LocalPrice; // $LocalPrice = 0; // function MyGetOptimalPrice($productID, $quantity = 1, $arUserGroups = array(), $renewal = "N", $arPrices = array(), $siteID = false, $arDiscountCoupons = false) // { // global $LocalPrice; // if($LocalPrice <= 0) // { // // Выведем актуальную корзину для текущего пользователя // $dbBasketItems = CSaleBasket::GetList(false, // array( // "FUSER_ID" => CSaleBasket::GetBasketUserID(), // "LID" => SITE_ID, // "ORDER_ID" => "NULL" // ), // false, // false, // array("ID", "MODULE", "PRODUCT_ID", "CALLBACK_FUNC", "QUANTITY", "DELAY", "CAN_BUY", "PRICE") // ); // while ($arItem = $dbBasketItems->Fetch()) // { // if($arItem['DELAY'] == 'N' && $arItem['CAN_BUY'] == 'Y') // { // $LocalPrice += $arItem['PRICE']*$arItem['QUANTITY']; // } // } // } // //ОПТ 1 при сумме заказа до 10 000 рублей // //ОПТ 2 при сумме заказа до 20 000 рублей // //ОПТ 3 при сумме заказа более 20 000 рублей // // получаем все типы цен, возможные для данного товара // $arOptPrices = CCatalogProduct::GetByIDEx($productID); // if($LocalPrice < 10000){ // $price = $arOptPrices['PRICES'][1]['PRICE']; // $catalog_group_id = 1; // } // elseif($LocalPrice >= 10000 and $LocalPrice < 20000){ // $price = $arOptPrices['PRICES'][2]['PRICE']; // $catalog_group_id = 2; // } // elseif($LocalPrice >= 20000){ // $price = $arOptPrices['PRICES'][3]['PRICE']; // $catalog_group_id = 3; // } // return array( // 'PRICE' => array( // "ID" => $productID, // 'CATALOG_GROUP_ID' => $catalog_group_id, // 'PRICE' => $price, // 'CURRENCY' => "RUB", // 'ELEMENT_IBLOCK_ID' => $productID, // 'VAT_INCLUDED' => "Y", // ), // 'DISCOUNT' => array( // 'VALUE' => $discount, // 'CURRENCY' => "RUB", // ), // ); // } if (!function_exists("getSaleFilter")) { function getSaleFilter() { $return = ["ID" => []]; if (CModule::IncludeModule("catalog")) { $discounts = []; $objDiscount = new CCatalogDiscount(); if ($res = $objDiscount->GetDiscountProductsList([], ["ACTIVE" => "Y"], false, false, ["*", "ACTIVE"])) { while ($ob = $res->GetNext()) { $discounts[$ob["DISCOUNT_ID"]][] = $ob["PRODUCT_ID"]; } } $arFilter = ['ID' => array_keys($discounts)]; $dbCoupon = $objDiscount->GetList([], $arFilter); while ($arCoupon = $dbCoupon->Fetch()) { if ($arCoupon["ACTIVE"] !== "Y") { unset($discounts[$arCoupon["ID"]]); } } foreach ($discounts as $item) { $return["ID"] = array_merge($return["ID"], $item); } } return $return; } } AddEventHandler("main", "OnBeforeUserAdd", Array("EventsUser", "OnBeforeUserAddHandler")); class EventsUser { // создаем обработчик события "OnBeforeUserAdd" function OnBeforeUserAddHandler(&$arFields) { if(!$arFields["GROUP_ID"]) { $LIST_LANGUAGE = array('en', 6, 'cs', 7, 'de', 8, 'ru', 5, 'la', 9, 'es', 10 ,'pt', 11,'it', 12,'fi', 13,'nl', 19,'fr', 14,'se', 18,'dk', 17,'no', 16, 'pl', 15); $key = array_search(LANGUAGE_ID,$LIST_LANGUAGE); $arFields["GROUP_ID"] = [$LIST_LANGUAGE[$key+1]]; } } } //вырезаем type="text/javascript" AddEventHandler("main", "OnEndBufferContent", "removeType"); function removeType(&$content) { $content = replace_output($content); } function replace_output($d) { return str_replace(' type="text/javascript"', "", $d); } /* Last Modified */ /*AddEventHandler('main', 'OnEpilog', array('CBDPEpilogHooks', 'CheckIfModifiedSince')); class CBDPEpilogHooks { function CheckIfModifiedSince() { GLOBAL $lastModified; if (!$lastModified) $lastModified=getlastmod(); if ($lastModified) { header("Cache-Control: public"); header('Last-Modified: ' . gmdate('D, d M Y H:i:s', $lastModified) . ' GMT'); if (isset($_SERVER['HTTP_IF_MODIFIED_SINCE']) && strtotime($_SERVER['HTTP_IF_MODIFIED_SINCE']) >= $lastModified) { $GLOBALS['APPLICATION']->RestartBuffer();CHTTP::SetStatus('304 Not Modified'); exit(); /*header('HTTP/1.1 304 Not Modified'); exit;*/ /* } } } }*/ /* header("Expires: ".gmdate("D, d M Y H:i:s", time() - 1)." GMT"); $LastModified_unix = 1294844676; $LastModified = gmdate("D, d M Y H:i:s \G\M\T", $LastModified_unix); $IfModifiedSince = false; if (isset($_ENV['HTTP_IF_MODIFIED_SINCE'])) { $IfModifiedSince = strtotime(substr($_ENV['HTTP_IF_MODIFIED_SINCE'], 5)); } if (isset($_SERVER['HTTP_IF_MODIFIED_SINCE'])) { $IfModifiedSince = strtotime(substr($_SERVER['HTTP_IF_MODIFIED_SINCE'], 5)); } if ($IfModifiedSince && $IfModifiedSince >= $LastModified_unix) { header($_SERVER['SERVER_PROTOCOL'].' 304 Not Modified'); exit; } header('Last-Modified: '.$LastModified); */ if(!headers_sent()) { header("Content-type: text/html; charset=".LANG_CHARSET); /** * Last Modified **/ if(CModule::IncludeModule("iblock")) { $arFilter = Array("ACTIVE_DATE"=>"Y", "ACTIVE"=>"Y", 'CODE' => $_REQUEST['CODE']); $res = CIBlockElement::GetList(Array(), $arFilter, false); while($ob = $res->GetNextElement()) { $arFields = $ob->GetFields(); } } $last_modified_time = (!empty($arFields)) ? strtotime($arFields['TIMESTAMP_X']) : filemtime(__FILE__); header("Cache-Control: public"); if (isset($_SERVER['HTTP_IF_MODIFIED_SINCE']) && strtotime($_SERVER['HTTP_IF_MODIFIED_SINCE']) >= $last_modified_time) { header('HTTP/1.1 304 Not Modified'); exit(); } header('Last-Modified: '.gmdate('D, d M Y H:i:s', $last_modified_time).' GMT'); } ?> |
|||
|
|
|