• Модуль: lists
  • Путь к файлу: ~/bitrix/modules/lists/lib/field.php
  • Класс: BitrixListsField
  • Вызов: Field::getLinkToElement
static function getLinkToElement(array $field)
{
	if(empty($field['VALUE']))
		return Loc::getMessage('LISTS_FIELD_NOT_DATA');

	if(!is_array($field['VALUE']))
		$field['VALUE'] = array($field['VALUE']);

	$result = array();
	$filter = array();
	foreach($field['VALUE'] as $value)
	{
		if(!empty(self::$cache[$field['TYPE']][$value]))
			$result[] = self::$cache[$field['TYPE']][$value];

		$filter['ID'][] = $value;
	}

	if(!empty($result) && (count($result) == count($field['VALUE'])))
		return implode(self::$separator, $result);
	else
		$result = array();

	$urlTemplate = CList::getUrlByIblockId($field['LINK_IBLOCK_ID']);
	if(!$urlTemplate && !empty($field["LIST_ELEMENT_URL"]))
		$urlTemplate = $field["LIST_ELEMENT_URL"];
	$filter['CHECK_PERMISSIONS'] = 'Y';
	if ($field['LINK_IBLOCK_ID'] > 0)
		$filter['IBLOCK_ID'] = $field['LINK_IBLOCK_ID'];

	$queryObject = CIBlockElement::getList(array(), $filter, false, false, array('*'));
	while($element = $queryObject->getNext())
	{
		$elementUrl = str_replace(
			array('#list_id#', '#section_id#', '#element_id#'),
			array($element['IBLOCK_ID'], '0', $element['ID']),
			$urlTemplate
		);
		$elementUrl = CHTTP::urlAddParams($elementUrl, array("list_section_id" => ""));
		$result[] = ''.HtmlFilter::encode(
			$element['~NAME']).'';

		self::$cache[$field['TYPE']][$element['ID']] =
			''.HtmlFilter::encode(
				$element['~NAME']).'';
	}

	return implode(self::$separator, $result);
}