bitrix highload get value by uf_xml_id

result_modifier.php в папке шаблона компонента детального просмотра

use Bitrix\Highloadblock as HL;
use Bitrix\Main\Entity;
if(count($arResult['PROPERTIES']["COLOR"]['VALUE'])>0){
	$XMLID=$arResult['PROPERTIES']["COLOR"]['VALUE'];
	CModule::IncludeModule("highloadblock");
	$hlblock=HL\HighloadBlockTable::getById(1)->fetch();
	$entity=HL\HighloadBlockTable::compileEntity($hlblock);
	$entity_data_class=$entity->getDataClass();
	$rsProp=$entity_data_class::getList(array(
		"select"=>array('*'),
		"filter"=>array('=UF_XML_ID'=>$XMLID),
	));
	$arResult['HLBLOCK_VALUES']["COLOR"]=array();
	while($arProp = $rsProp->Fetch()){
		$arResult['HLBLOCK_VALUES']["COLOR"][$arProp['UF_XML_ID']]=$arProp;
	}
}

где getById(1): 1 — ID Highload-блока
В шаблоне результат:

print_r($arResult['HLBLOCK_VALUES']);

google maps open marker with link — открыть хинт кликом по ссылке

Открыть хинт нажатием по ссылке вне карты:
Полный рабочий пример:

<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script>
<script type="text/javascript">
	var markers=[];
	function initialize(){
		var hLatlng=new google.maps.LatLng(59.939095,30.315868);
		var hOptions={
			zoom:10,
			center:hLatlng,
			panControl:false,
			zoomControl:true,
			scalecontrol:true,
			scrollwheel:false,
			mapTypeId:google.maps.MapTypeId.ROADMAP
		}
		var map=new google.maps.Map(document.getElementById("map_canvas"),hOptions); 
		var contentString='<div class="info_content" id="info_content_1"><p>Адрес 1</p></div>';
		var iLatlng=new google.maps.LatLng(59.939095,30.315868);
		var infowindow_1=new google.maps.InfoWindow({
			content:contentString
		});
		var marker_1=new google.maps.Marker({
			position:iLatlng,
			map:map,
			title:'Адрес 1'
		});
		markers.push(marker_1);
		google.maps.event.addListener(marker_1,'click',function(){
			infowindow_2.close();
			infowindow_1.open(map,marker_1);
		});
		var contentString='<div class="info_content" id="info_content_2"><p>Адрес 2</p></div>';
		var iLatlng=new google.maps.LatLng(59.90825,30.362823);
		var infowindow_2=new google.maps.InfoWindow({
			content:contentString
		});
		var marker_2=new google.maps.Marker({
			position:iLatlng,
			map:map,
			title:'Адрес 2'
		});
		markers.push(marker_2);
		google.maps.event.addListener(marker_2,'click',function(){
			infowindow_1.close();
			infowindow_2.open(map,marker_2);
		});
	}
	$(window).load(function(){
		initialize();
	})
</script>
<div class="addr_item">
	<p>Адрес 1 <a href="javascript:google.maps.event.trigger(markers[0],'click');">Показать на карте</a></p>
</div>
<div class="addr_item">
	<p>Адрес 2 <a href="javascript:google.maps.event.trigger(markers[1],'click');">Показать на карте</a></p>
</div>
<div id="map_canvas" style="width:640px;height:480px;"></div>

Для дополнительного функционала добавлено:
var markers=[];
markers.push(marker_1);
javascript:google.maps.event.trigger(markers[0],'click');
Предполагается, что адреса внутри foreach и порядок их инициализации на карте, и порядок ссылок совпадает.
infowindow_1.close(); — здесь нужно закрыть все остальные infowindow — также foreach тот же массив

bitrix: get id by code (получить id по символьному коду)

function getIdByCode($code,$iblock_id,$type){
	if(CModule::IncludeModule("iblock")){
		if($type=='IBLOCK_ELEMENT'){
			$arFilter=array("IBLOCK_ID"=>$iblock_id,"CODE"=>$code);
			$res=CIBlockElement::GetList(array(),$arFilter,false,array("nPageSize"=>1),array('ID'));
			$element=$res->Fetch();
			if($res->SelectedRowsCount()!=1) return '<p style="font-weight:bold;color:#ff0000">Элемент не найден</p>';
			else return $element['ID'];
		}
		else if($type=='IBLOCK_SECTION'){
			$res=CIBlockSection::GetList(array(),array('IBLOCK_ID'=>$iblock_id,'CODE'=>$code));
			$section=$res->Fetch();
			if($res->SelectedRowsCount()!=1) return '<p style="font-weight:bold;color:#ff0000">Раздел не найден</p>';
			else return $section['ID'];
		}
		else{
			return '<p style="font-weight:bold;color:#ff0000">Укажите тип</p>';
		}
	}
}
$property_type_value=getIdByCode($_REQUEST['type'],42,'IBLOCK_SECTION');

В примере получаем ID раздела из инфоблока с ID 42, у которого символьные код — $_REQUEST[‘type’].
Источники:
http://kadomtsev.ru/bitriks-kak-poluchit-id-razdela-ili-elementa-infobloka-po-simvolnomu-kodu/
http://www.bxdev.ru/posts/iblocks/getIdByCode/

bitrix: список элементов инфоблока по значению свойства

global $arTypesFilter;
$arTypesFilter=array("PROPERTY_TYPE"=>27);
$APPLICATION->IncludeComponent(
	"bitrix:news.list",
	"tpl",
	Array(
		"FILTER_NAME"=>"arTypesFilter",
		"PROPERTY_CODE"=>array("TYPE"),
	),
	false
);

Где 27 значение свойства TYPE. (Перечислены только параметры, которые участвуют в фильтрации.)

Google map iframe — убрать увеличение карты при прокрутке страницы колесиком мышки

(Disable mouse scroll wheel zoom on embedded Google Maps)
При прокрутке страницы колесиком мышки, когда курсор попадает на карту, вместо прокрутки далее страницы вниз происходит увеличение карты (особенно если карта на всю ширину страницы).
Как убрать?
Перед iframe добавляем div:

<div class="overlay" onClick="style.pointerEvents='none'"></div>
<iframe src="https://www.google.com/maps/embed?pb=!1m18!1m12!1m3!1d1998.5192766409587!2d30.2653292!3d59.940118700000006!2m3!1f0!2f0!3f0!3m2!1i1024!2i768!4f13.1!3m3!1m2!1s0x469631284de3a6fb%3A0x17f2808218507f5a!2zMTYt0Y8g0LvQuNC90LjRjywg0KHQsNC90LrRgi3Qn9C10YLQtdGA0LHRg9GA0LM!5e0!3m2!1sru!2sru!4v1438004309074" width="100%" height="550" frameborder="0" style="border:0" allowfullscreen></iframe>

Стиль:

.overlay {
	background:transparent; 
	position:relative; 
	width:100%;
	height:550px;
	top:550px;
	margin-top:-550px;
}

И если пользователь все-таки решил работать с картой — при клике на блок, который появился поверх карты — убираем его:

$(document).ready(function(){
	$('.overlay').click(function() {
		$(this).remove();
	});
});

Правильнее всего конечно для этого случая рисовать карту через API с параметром scrollwheel:false, но, бывает, нужно решение именно для фрейма.