Блог о программировании на PHP, Yii2, 1C-Bitrix

Добавление нового свойства

Иногда требуется добавить выбор по местоположению, цене, для этого можно использовать новые обработчики событий, например, обработчик события «Привязка к ценам»:

function GetListLocations(){
		return array(
			"PROPERTY_TYPE"      => "S",
			"USER_TYPE"         => "SListLocations",
			"DESCRIPTION"      => "Привязка к местоположению",
			"GetPropertyFieldHtml"   => array("regionality", "GetPropertyFieldHtmlLocations"),
		);
	}
	
	function GetPropertyFieldHtmlLocations( $arProperty, $value, $strHTMLControlName ){
		static $cache = array();
		$cache["LOCATIONS"] = array();
		$rsLoc = CSaleLocation::GetList(array(), array());
		while( $arLoc = $rsLoc->GetNext() ){
			if( !empty( $arLoc["CITY_NAME"] ) ){
				$cache["LOCATIONS"][$arLoc["ID"]] = $arLoc;
			}
		}
		
		$varName = str_replace("VALUE", "DESCRIPTION", $strHTMLControlName["VALUE"]);
		$html = '<select name="'.$strHTMLControlName["VALUE"].'" onchange="document.getElementById(\'DESCR_'.$varName.'\').value=this.options[this.selectedIndex].text">
		<option value=""></option>';
		foreach( $cache["LOCATIONS"] as $arLoc ){
			$html .= '<option value="'.$arLoc["ID"].'"';
			if( $value["VALUE"] == $arLoc["~ID"] )
				$html .= ' selected';
			$html .= '>'.$arLoc["CITY_NAME"].'</option>';
		}
		$html .= '</select>';
		return $html;
	}