• DONATE to NULLED!
    Форуму и его команде можно помочь, мотивировать модераторов разделов.
    Помогите модератору этого раздела wpt лично.

Релиз Интернет-магазин электроинструмента ЭЛЕКТРОСИЛА altop.elektroinstrument

В письме не приходит телефон клиента
в init.php надо добавить что то типа
PHP:
// Дополнительные поля в письме о заказе
AddEventHandler("sale", "OnOrderNewSendEmail", "bxModifySaleMails");
function bxModifySaleMails($orderID, &$eventName, &$arFields)
{
  $arOrder = CSaleOrder::GetByID($orderID);

  //-- получаем телефон
  $order_props = CSaleOrderPropsValue::GetOrderProps($orderID);
  $phone="";
  while ($arProps = $order_props->Fetch())
  {
    if ($arProps["CODE"] == "PHONE")
    {
       $phone = htmlspecialchars($arProps["VALUE"]);
    }
  }

  //-- добавляем новое поле в массив результатов
  $arFields["PHONE"] =  $phone;
}
<-------------- добавлено через 1905 сек. -------------->
Проверил только что, - должен приходить
 
в init.php надо добавить что то типа
PHP:
// Дополнительные поля в письме о заказе
AddEventHandler("sale", "OnOrderNewSendEmail", "bxModifySaleMails");
function bxModifySaleMails($orderID, &$eventName, &$arFields)
{
  $arOrder = CSaleOrder::GetByID($orderID);

  //-- получаем телефон
  $order_props = CSaleOrderPropsValue::GetOrderProps($orderID);
  $phone="";
  while ($arProps = $order_props->Fetch())
  {
    if ($arProps["CODE"] == "PHONE")
    {
       $phone = htmlspecialchars($arProps["VALUE"]);
    }
  }

  //-- добавляем новое поле в массив результатов
  $arFields["PHONE"] =  $phone;
}
Пробовал, не приходит все равно.
<-------------- добавлено через 2384 сек. -------------->
в init.php надо добавить что то типа
PHP:
// Дополнительные поля в письме о заказе
AddEventHandler("sale", "OnOrderNewSendEmail", "bxModifySaleMails");
function bxModifySaleMails($orderID, &$eventName, &$arFields)
{
  $arOrder = CSaleOrder::GetByID($orderID);

  //-- получаем телефон
  $order_props = CSaleOrderPropsValue::GetOrderProps($orderID);
  $phone="";
  while ($arProps = $order_props->Fetch())
  {
    if ($arProps["CODE"] == "PHONE")
    {
       $phone = htmlspecialchars($arProps["VALUE"]);
    }
  }

  //-- добавляем новое поле в массив результатов
  $arFields["PHONE"] =  $phone;
}
<-------------- добавлено через 1905 сек. -------------->
Проверил только что, - должен приходить

Вроде все вставляю правильно, но все равно не приходит. В админке телефон отображается, а на почту не приходит!
Тоже самое и с покупокой в 1 клик телефон не отображается.
2ea27a32e234.png



Код:
<?

// Дополнительные поля в письме о заказе
AddEventHandler("sale", "OnOrderNewSendEmail", "bxModifySaleMails");
function bxModifySaleMails($orderID, &$eventName, &$arFields)
{
  $arOrder = CSaleOrder::GetByID($orderID);

  //-- получаем телефон
  $order_props = CSaleOrderPropsValue::GetOrderProps($orderID);
  $phone="";
  while ($arProps = $order_props->Fetch())
  {
    if ($arProps["CODE"] == "PHONE")
    {
       $phone = htmlspecialchars($arProps["VALUE"]);
    }
  }

  //-- добавляем новое поле в массив результатов
  $arFields["PHONE"] =  $phone;
}

?>
<?
AddEventHandler("iblock", "OnAfterIBlockElementUpdate", "DoIBlockAfterSave");
AddEventHandler("iblock", "OnAfterIBlockElementAdd", "DoIBlockAfterSave");
AddEventHandler("catalog", "OnPriceAdd", "DoIBlockAfterSave");
AddEventHandler("catalog", "OnPriceUpdate", "DoIBlockAfterSave");

function DoIBlockAfterSave($arg1, $arg2 = false) {
    $ELEMENT_ID = false;
    $IBLOCK_ID = false;
    $OFFERS_IBLOCK_ID = false;
    $OFFERS_PROPERTY_ID = false;
    if(CModule::IncludeModule('currency'))
        $strDefaultCurrency = CCurrency::GetBaseCurrency();
  
    if(is_array($arg2) && $arg2["PRODUCT_ID"] > 0) {
        $rsPriceElement = CIBlockElement::GetList(
            array(),
            array(
                "ID" => $arg2["PRODUCT_ID"],
            ),
            false,
            false,
            array("ID", "IBLOCK_ID")
        );
        if($arPriceElement = $rsPriceElement->Fetch()) {
            $arCatalog = CCatalog::GetByID($arPriceElement["IBLOCK_ID"]);
            if(is_array($arCatalog)) {
                if($arCatalog["OFFERS"] == "Y") {
                    $rsElement = CIBlockElement::GetProperty(
                        $arPriceElement["IBLOCK_ID"],
                        $arPriceElement["ID"],
                        "sort",
                        "asc",
                        array("ID" => $arCatalog["SKU_PROPERTY_ID"])
                    );
                    $arElement = $rsElement->Fetch();
                    if($arElement && $arElement["VALUE"] > 0) {
                        $ELEMENT_ID = $arElement["VALUE"];
                        $IBLOCK_ID = $arCatalog["PRODUCT_IBLOCK_ID"];
                        $OFFERS_IBLOCK_ID = $arCatalog["IBLOCK_ID"];
                        $OFFERS_PROPERTY_ID = $arCatalog["SKU_PROPERTY_ID"];
                    }
                } elseif($arCatalog["OFFERS_IBLOCK_ID"] > 0) {
                    $ELEMENT_ID = $arPriceElement["ID"];
                    $IBLOCK_ID = $arPriceElement["IBLOCK_ID"];
                    $OFFERS_IBLOCK_ID = $arCatalog["OFFERS_IBLOCK_ID"];
                    $OFFERS_PROPERTY_ID = $arCatalog["OFFERS_PROPERTY_ID"];
                } else {
                    $ELEMENT_ID = $arPriceElement["ID"];
                    $IBLOCK_ID = $arPriceElement["IBLOCK_ID"];
                    $OFFERS_IBLOCK_ID = false;
                    $OFFERS_PROPERTY_ID = false;
                }
            }
        }
    } elseif(is_array($arg1) && $arg1["ID"] > 0 && $arg1["IBLOCK_ID"] > 0) {
        $arOffers = CIBlockPriceTools::GetOffersIBlock($arg1["IBLOCK_ID"]);
        if(is_array($arOffers)) {
            $ELEMENT_ID = $arg1["ID"];
            $IBLOCK_ID = $arg1["IBLOCK_ID"];
            $OFFERS_IBLOCK_ID = $arOffers["OFFERS_IBLOCK_ID"];
            $OFFERS_PROPERTY_ID = $arOffers["OFFERS_PROPERTY_ID"];
        }
    }

    if($ELEMENT_ID) {
        static $arPropCache = array();
        if(!array_key_exists($IBLOCK_ID, $arPropCache)) {
            $rsProperty = CIBlockProperty::GetByID("MINIMUM_PRICE", $IBLOCK_ID);
            $arProperty = $rsProperty->Fetch();
            if($arProperty)
                $arPropCache[$IBLOCK_ID] = $arProperty["ID"];
            else
                $arPropCache[$IBLOCK_ID] = false;
        }

        if($arPropCache[$IBLOCK_ID]) {
            if($OFFERS_IBLOCK_ID) {
                $rsOffers = CIBlockElement::GetList(
                    array(),
                    array(
                        "IBLOCK_ID" => $OFFERS_IBLOCK_ID,
                        "PROPERTY_".$OFFERS_PROPERTY_ID => $ELEMENT_ID,
                    ),
                    false,
                    false,
                    array("ID")
                );
                while($arOffer = $rsOffers->Fetch())
                    $arProductID[] = $arOffer["ID"];
                  
                if(!is_array($arProductID))
                    $arProductID = array($ELEMENT_ID);
            } else
                $arProductID = array($ELEMENT_ID);

            $minPrice = false;
            $minQuantity = false;
          
            $rsPrices = CPrice::GetList(
                array(),
                array(
                    "PRODUCT_ID" => $arProductID,
                )
            );
            while($arPrice = $rsPrices->Fetch()) {
                if(CModule::IncludeModule('currency') && $strDefaultCurrency != $arPrice['CURRENCY'])
                    $arPrice["PRICE"] = CCurrencyRates::ConvertCurrency($arPrice["PRICE"], $arPrice["CURRENCY"], $strDefaultCurrency);
              
                $PRICE = $arPrice["PRICE"];
                $ar_res = CCatalogProduct::GetByID($arPrice["PRODUCT_ID"]);
                $QUANTITY = $ar_res["QUANTITY"];
              
                if($minPrice === false || $minPrice > $PRICE) {
                    $minPrice = $PRICE;
                    $minQuantity = $QUANTITY;
                }
            }

            if($minPrice !== false) {
                CIBlockElement::SetPropertyValuesEx(
                    $ELEMENT_ID,
                    $IBLOCK_ID,
                    array(
                        "MINIMUM_PRICE" => $minPrice
                    )
                );
                              
                CCatalogProduct::Update(
                    $ELEMENT_ID,
                    array(
                        "QUANTITY" => $minQuantity
                    )
                );
            }
        }
    }
  
}?>
 
Последнее редактирование:
В админке то будет виден, без доработки.
Добавляет поля и "в один клик", мой полный лист
PHP:
// Дополнительные поля в письме о заказе
AddEventHandler("sale", "OnOrderNewSendEmail", "bxModifySaleMails");
function bxModifySaleMails($orderID, &$eventName, &$arFields)
{
  $arOrder = CSaleOrder::GetByID($orderID);

  //-- получаем телефоны и адрес
  $order_props = CSaleOrderPropsValue::GetOrderProps($orderID);
  $phone="";
  $index = "";
  $country_name = "";
  $city_name = "";
  $address = "";
  while ($arProps = $order_props->Fetch())
  {
    if ($arProps["CODE"] == "PHONE")
    {
       $phone = htmlspecialchars($arProps["VALUE"]);
    }
    if ($arProps["CODE"] == "LOCATION")
    {
        $arLocs = CSaleLocation::GetByID($arProps["VALUE"]);
        $country_name =  $arLocs["COUNTRY_NAME_ORIG"];
        $city_name = $arLocs["CITY_NAME_ORIG"];
    }

    if ($arProps["CODE"] == "ZIP")
    {
      $index = $arProps["VALUE"];
    }

    if ($arProps["CODE"] == "ADDRESS")
    {
      $address = $arProps["VALUE"];
    }
  }

  $full_address = $index."  ".$country_name." - ".$city_name.", ".$address;

  //-- получаем название платежной системы
  $arPaySystem = CSalePaySystem::GetByID($arOrder["PAY_SYSTEM_ID"]);
  $pay_system_name = "";
  if ($arPaySystem)
  {
    $pay_system_name = $arPaySystem["NAME"];
  }

  //-- добавляем новые поля в массив результатов
  $arFields["ORDER_DESCRIPTION"] = $arOrder["USER_DESCRIPTION"];
  $arFields["PHONE"] =  $phone;
  $arFields["PAY_SYSTEM_NAME"] =  $pay_system_name;
  $arFields["FULL_ADDRESS"] = $full_address;
}
 
Помог код:

PHP:
<?
AddEventHandler("main", "OnBeforeEventAdd", array("MailPost", "OnBeforeEventAddHandler"));
class MailPost
{
    function OnBeforeEventAddHandler(&$event, &$lid, &$arFields)
    {
    if ($event=="SALE_NEW_ORDER") {
      $order = CSaleOrder::GetByID($arFields['ORDER_ID']);
  
     if(CModule::IncludeModule('sale')) {

         if ($arOrder = CSaleOrder::GetByID($arFields['ORDER_ID'])) {
            
             if ($arPaySys = CSalePaySystem::GetByID($arOrder["PAY_SYSTEM_ID"]))
          {
            if ($arPaySys["ID"] == "5") {
              $arFields["REKVIZIT_SBERBANK"] = "<br>Номер карты сбербанка 4276720010044925 <br>Ирина Александровна С <br>В комментарии к оплате укажите вашу фамилию.";  
            }
             $arFields["PAY_SYSTEM_ID"] = $arPaySys["NAME"];
          }

        if ($arDeliv = CSaleDelivery::GetByID($arOrder["DELIVERY_ID"]))
        {
           $arFields["DELIVERY_ID"] = $arDeliv["NAME"];
        }
        if ($arOrder["DELIVERY_ID"] == "pickpoint:postamat") {
              $arFields["DELIVERY_ID"] = "Pickpoint";
            }

      }
      if ($arOrderPropsValue = CSaleOrderPropsValue::GetOrderProps($arFields['ORDER_ID'])) {
          while ($orderProp = $arOrderPropsValue->Fetch()) {
            $orderProp["ORDER_PROPS_ID"] = intval($orderProp["ORDER_PROPS_ID"]);
            switch ($orderProp["ORDER_PROPS_ID"]) {
              case 1:
                $arFields["FIO"] = $orderProp["VALUE"];
                break;
              case 9:
                $arFields["LASTNAME"] = $orderProp["VALUE"];
                break;
              case 10:
                $arFields["FIRSTNAME"] = $orderProp["VALUE"];
                break;
              case 11:
                $arFields["SECONDNAME"] = $orderProp["VALUE"];
                break;
              case 3:
                $arFields["PHONE"] = $orderProp["VALUE"];
                break;
              case 8:
                $arFields["INDEX"] = $orderProp["VALUE"];
                break;  
              case 5:
                $arLocs = CSaleLocation::GetByID($orderProp["VALUE"], LANGUAGE_ID);
                $arFields["LOCATION"] = $arLocs["COUNTRY_NAME"].' / '.$arLocs["REGION_NAME"].' / '.$arLocs["CITY_NAME_ORIG"];
                break;
              case 7:
                $arFields["ADDRESS"] = $orderProp["VALUE"];
                break;
            }
            $arFields["FIO"] = $arFields["LASTNAME"]." ".$arFields["FIRSTNAME"]." ".$arFields["SECONDNAME"];

        }
      
      }  

       }
    }
      
    }
}

?>
 
Подскажите, пожалуйста, как в данном решении сделать копию кнопки "Заказать звонок", чтобы разместить ее в карточке самого товара Для просмотра ссылки Войди или Зарегистрируйся
Буду безумно благодарен за подсказку.
 
в
/templates/elektro_flat/components/bitrix/catalog/.default/bitrix/catalog.element/.default/template.php
перед
<div class="column three<?=($arResult["COLLECTION"]["THIS"]) ? " colletion" : ""?>">
вставить
<a id="callbackAnch" class="btn_buy apuo callback_anch" href="javascript:void(0)"><span class="cont"><i class="fa fa-phone"></i><span class="text">Заказать звонок</span></span></a>
из header.php строку с выводом кнопки удалить
 
в
/templates/elektro_flat/components/bitrix/catalog/.default/bitrix/catalog.element/.default/template.php
перед
<div class="column three<?=($arResult["COLLECTION"]["THIS"]) ? " colletion" : ""?>">
вставить
<a id="callbackAnch" class="btn_buy apuo callback_anch" href="javascript:void(0)"><span class="cont"><i class="fa fa-phone"></i><span class="text">Заказать звонок</span></span></a>
из header.php строку с выводом кнопки удалить

Я пытался так сделать, но кнопка не кликается Для просмотра ссылки Войди или Зарегистрируйся (из header не удалял, так как хочу продублировать саму кнопку, и в header и в самой карточке товара)
 
У кого есть PSD шаблона?
 
есть модуль что б при покупке от 10 шт менялась цена?
 
Назад
Сверху