Bitrix

посмотреть кодировку таблицы mysql

17.11.2014 Bitrix

SHOW CREATE TABLE TEBLE_NAME

bitrix user fields проблемы с кодировкой

17.11.2014 Bitrix

Если у вас возникли проблемы такого рода

bitrix user fields проблемы с кодировкой

bitrix user fields проблемы с кодировкой

SHOW CREATE TABLE b_uts_iblock_15_section
ALTER TABLE `b_uts_iblock_15_section` CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;

bitrix изменить значение свойства заказ

13.10.2014 Bitrix , , ,

Bitrix\Main\Loader::includeModule('sale');
Bitrix\Main\Loader::includeModule('iblock');
Bitrix\Main\Loader::includeModule('catalog');
$ORDER_ID = 23;
$db_order = CSaleOrder::GetList(
	array("DATE_UPDATE" => "DESC"),
	array("ID" => $ORDER_ID),
	false,
	false,
	array('ID', 'PERSON_TYPE_ID')
);
if ($arOrder = $db_order->Fetch())
{
   $db_props = CSaleOrderProps::GetList(
        array("SORT" => "ASC"),
        array(
			"PERSON_TYPE_ID" => $arOrder["PERSON_TYPE_ID"], // тип плательщика
			"CODE"			=>	"PAY_SUMM" // код свойства который надо изменить
		)
    );
   while ($arProps = $db_props->Fetch())
   {
		$db_vals = CSaleOrderPropsValue::GetList(
            array("SORT" => "ASC"),
            array(
                    "ORDER_ID" => $ORDER_ID,
                    "ORDER_PROPS_ID" => $arProps["ID"]
                )
        );
		while ($arVals = $db_vals->Fetch()){
			if(!$arVals['VALUE'])
				CSaleOrderPropsValue::Update($arVals['ID'], array("ORDER_ID"=>$arVals['ORDER_ID'], "VALUE"=>"140")); 
		}
   }
}

скроллинг к нужному объекту jquery

07.09.2014 Bitrix

function scrollToToId(id)
{
	var id = id;
	$('html,body').animate({scrollTop: $(comment_id).offset().top}, 1000); 
}


function scrollTo(element,navheight){
	var offset = element.offset();
	var offsetTop = offset.top;
	var totalScroll = offsetTop-navheight;
			 
	$('body,html').animate({
		scrollTop: totalScroll
	}, 500);
}
scrollTo(jQuery('#ololo'), 40)

bitrix получить id типа цен

04.09.2014 Bitrix ,

Есть прекрасные методы

$arResultPrices = CIBlockPriceTools::GetCatalogPrices($arParams["IBLOCK_ID"], $arParams["PRICE_CODE"]);
array (
  'CLUB' => 
  array (
    'ID' => '2',
    'TITLE' => 'Цена клубная',
    'SELECT' => 'CATALOG_GROUP_2',
    'CAN_VIEW' => true,
    'CAN_BUY' => true,
  ),
)
$arResultPricesAllow = CIBlockPriceTools::GetAllowCatalogPrices($arResultPrices);
array (
  0 => 2,
)

Дерево до самого начала, получение родителей секции.

05.08.2014 Bitrix

Получение родителей секции.


	if(CModule::IncludeModule("iblock"))
	{
	

		$rsParentSection = CIBlockSection::GetByID('7');
		if ($arParentSection = $rsParentSection->GetNext())
		{
			// var_dump($arParentSection);
			  /* itdbg($arParentSection['ID']); */
			  itdbg($arParentSection['IBLOCK_ID']);
			  itdbg($arParentSection['LEFT_MARGIN']);
			  itdbg($arParentSection['RIGHT_MARGIN']);
			  itdbg($arParentSection['DEPTH_LEVEL']);
		   $arFilter = array(
		   'IBLOCK_ID' => $arParentSection['IBLOCK_ID'],
		   '<=LEFT_BORDER' => $arParentSection['LEFT_MARGIN'], 
		   '>=RIGHT_BORDER' => $arParentSection['RIGHT_MARGIN'],
		   // '<DEPTH_LEVEL' => $arParentSection['DEPTH_LEVEL']
		   ); // выберет потомков без учета активности
		   $rsSect = CIBlockSection::GetList(array('DEPTH_LEVEL'=>'asc'),$arFilter);
		   while ($arSect = $rsSect->GetNext())
		   {
			   // получаем подразделы
			   itdbg($arSect[NAME], false,3);
			   itdbg($arSect[ID], false,3);
			   itdbg($arSect[DEPTH_LEVEL], false,3);
			 

		   }
		}
	}

Добавление свойства тип карты в компонент iblock.element.add.form

04.08.2014 Bitrix ,

вставляется в шаблон

<?if($arResult["PROPERTY_LIST_FULL"][$propertyID]["USER_TYPE"] == "map_yandex"):?><?
         CModule::IncludeModule('iblock');
         include_once($_SERVER['DOCUMENT_ROOT'].'/bitrix/modules/iblock/admin_tools.php');
         $property_fields = $arResult["PROPERTY_LIST_FULL"][$propertyID];
         $arUserType = CIBlockProperty::GetUserType($property_fields["USER_TYPE"]);
         
         echo call_user_func_array($arUserType["GetPropertyFieldHtml"],
          array(
           $property_fields,
           array("VALUE"=>$value),
           array(
            "VALUE"=>'PROPERTY['.$property_fields["ID"].']['.$i.']',
            "DESCRIPTION"=>'PROPERTY['.$property_fields["ID"].']['.$i.'][DESCRIPTION]',
            "FORM_NAME"=>'iblock_add',
            "MODE"=>"FORM_FILL",
            "COPY"=>false,
           ),
          )
         );
          
          
        endif?>

Получение id раздела по коду и id элемента по коду

02.08.2014 Bitrix ,

$iSectionID = CIBlockFindTools::GetSectionID(false,$_REQUEST['SECTION_CODE'],array("IBLOCK_ID" => I_CONTESTS));
$iElementID = CIBlockFindTools::GetElementID(false,$_REQUEST['CODE'],false,false,array("IBLOCK_ID" => I_CONTESTS));

bitrix фильтр по датам

01.08.2014 Bitrix ,

bitrix фильтр по свойствам с датой

	$arFiltr['<=PROPERTY_WITH_TIME']	= date("Y-m-d H:i:s", time());
	$arFiltr['>=PROPERTY_TO_TIME']		= date("Y-m-d H:i:s", time());

Подписка пользователя на рассылку при регистрации BITRIX

23.06.2014 Bitrix , ,

Нужно создать свойство checkbox UF_SUBSCR, вывести в форме регистрации и вставить этот код в init.php

AddEventHandler("main", "OnAfterUserUpdate", Array("EventHandlerClass", "OnAfterUserUpdateHandler"));
class EventHandlerClass
{
	function OnAfterUserUpdateHandler(&$arFields)
    {
		
		global $USER;
		 // условие атоподписки, если пользователь подтверждает регистрацию или если admin редактирует пользователя
		if(
			($arFields['RESULT'] && $_GET['confirm_user_id'] > 0 && $_GET['confirm_code'] && $_GET['confirm_user_id'] == $arFields['ID']) || 
			$USER->IsAdmin()
		){	
				// поиск польщователя
				$filter = Array(
					"ID" => $arFields['ID'],
				);
				
				// выбираем EMAIL и свойство UF_SUBSCR
				$rsUsers = CUser::GetList(
					($by="id"), 
					($order="desc"), 
					$filter,
					array(
						'FIELDS' => array('ID', 'EMAIL'),
						'SELECT' => array('UF_SUBSCR')
					)
				);
				if($usParam = $rsUsers->Fetch()){

					CModule::IncludeModule("subscribe");
					$subscr = new CSubscription;
					
					// если свойство заполнено то полписываем
					if($usParam['UF_SUBSCR']){
					
						// поиск подписчика по mail
						$subscription = CSubscription::GetByEmail($usParam['EMAIL']);
						
						if($arSub = $subscription->Fetch()){			
							// если майл есть в подписчиках, то активируем подписку
							$res = $subscr->Update($arSub['ID'], array(
								"ACTIVE"		=> "Y",
								"USER_ID"		=> $usParam['ID'],
								"RUB_ID"		=> array(G_SUBSCRIPTION),// id подписки
								)
							);
						
						}else{
							// если нет подписки, то добавляем его
							$arFieldFiltr = Array(
								"RUB_ID"		=> array(G_SUBSCRIPTION),// id подписки
								"USER_ID"		=> $usParam['ID'],
								"FORMAT"		=> "text",
								"EMAIL"			=> $usParam['EMAIL'],
								"ACTIVE"		=> "Y",
								"SEND_CONFIRM"	=> 'N'
							);
							$ID = $subscr->Add($arFieldFiltr);							
							// поиск подписчика по mail, что бы получить код потверждения
							$subscription = CSubscription::GetByEmail($usParam['EMAIL']);				
							if($arSub = $subscription->Fetch()){		
								$arResult['DATA_SUB_USSER']	= $arSub;
							}
							
							// подтверждаем подписку
							$res = $subscr->Update($ID, 
								array(
									"CONFIRMED"		=> "Y",
									"CONFIRM_CODE"	=> $arResult['DATA_SUB_USSER']["CONFIRM_CODE"]
								)
							);
							unset($arResult);
						}
					}else{
						// если при обновлении пользователя свойство пустое, то деактивируем подписчика 
						$subscription = CSubscription::GetByEmail($usParam['EMAIL']);
						if($arSub = $subscription->Fetch()){			
							// активируем подписку
							$res = $subscr->Update($arSub['ID'], array(
								"ACTIVE"		=> "N",
								)
							);						
						}					
					}
				}
			}
	}
}