Задать вопрос
  • Битрикс. Как вывести пользовательское свойство в хлебных крошках?

    @krang13 Автор вопроса
    Ну все, решил. Спасибо тебе, добрый человек! Без твоей помощи б никуда не ушел.
    Выкладываю готовый код шаблона хлебных крошек с решенной задачей для следующего поколения чайников. При этом не трогал сам компонент, только шаблон!
    $strReturn = '<ul class="breadcrumb-navigation" xmlns:v="http://rdf.data-vocabulary.org/#">';
    
    for($index = 0, $itemSize = count($arResult); $index < $itemSize; $index++)
    {
    	if($index > 0) {
    		$strReturn .= '<li><span>&nbsp;&gt;&nbsp;</span></li>';
    		$cutLink=explode("/", $arResult[$index]["LINK"]);//разбиваем путь на SECTION_CODE
    		$cnt=count($cutLink);//считаем количество элементов массива
    		$numSecNow=$cnt-2;//номер текущего (чпу со "/" на конце, поэтому -2)
    		$secNow=$cutLink["$numSecNow"];//нужный нам SECTION_CODE
    	}
    	else $secNow="first";//не обязательно ваще
    	//тут чудо-код нашего друга. спс за него!
    	$iblock_id = 1; //мы должны знать ID инфоблока каталога
    	$custom_name = 'UF_ALT_NAME'; //символьный код свойства для кастомного тайтла
    	if(CModule::IncludeModule("iblock")){
    		$dbSection = CIBlockSection::GetList(
    			array("SORT"=>"ASC"),//сортировка по возрастанию. нам все равно
    			array(
    				"IBLOCK_ID" => $iblock_id,//ищем наше свойство по ID инфоблока
    				"CODE" => $secNow//и по найденному SECTION_CODE
    				),
    			false,//хз че
    			array($custom_name)//тут собсно то, что нам нужно достать
    		);
    		if ($arSection = $dbSection->GetNext()){
    			$new_name = $arSection["$custom_name"];
    		}
    	}
    	$title = htmlspecialcharsex($arResult[$index]["TITLE"]);//из стандартного шаблона
    	if ($new_name) {//если нашли, что нам нужно, присваиваем его
    		$name=$new_name;
    	}
    	else {//если нет - оставляем стандартный
    		$name=$title;
    	}
    	
    	if($arResult[$index]["LINK"] <> ""&&$index<(count($arResult)-1))//уже попсовый костыль, чтоб последняя крошка была без ссылки
    		$strReturn .= '<li><span typeof="v:Breadcrumb"><a href="'.$arResult[$index]["LINK"].'" title="'.$title.'" rel="v:url" property="v:title">'.$name.'</a><span></li>';
    	else
    		$strReturn .= '<li>'.$name.'</li>';
    }
    $strReturn .= "</ul> ";//$str
    return $strReturn;

    Рабочий код! Еще раз спасибо, Васильев!
    Ответ написан
    3 комментария
  • Битрикс. Как вывести пользовательское свойство в хлебных крошках?

    @krang13 Автор вопроса
    Спасибо еще раз!
    Но, видимо, так не получится. Не затирается arResult старый. что тогда в компоненте должно быть? ничего? Тоже не выходит.
    Еще момент. Свойство используется то, которое дополнительное UF_. тогда вместо
    array('PROPERTY_'.$custom_name)
    //будет так? 
    array('UF_ALT_NAME')
    //а вместо 
    $new_name = $arSection['PROPERTY_'.$custom_name.'_VALUE'];
    //сработает? 
    $new_name = $arSection['UF_ALT_NAME'];

    вот тут я не уверен..где же те самые знатоки, чтоб попинали..
    Ответ написан
  • Битрикс. Как вывести пользовательское свойство в хлебных крошках?

    @krang13 Автор вопроса
    Спасибо за ответ!
    С каталогом все более менее ясно. там задаются параметры вручную. А в тех же крошках непонятен (мне по крайней мере) алгоритм формирования массива $arResult. В выдаче параметры NAME да LINK. И на выходе название раздела берется автоматически и названием пункта меню и хлебной крошки, а их нужно настраивать вручную. Такая вот нужда для СЕО.
    Не могли бы направить по этому классу CIBlockSection::GetList по компоненту breadcrumbs. Какие параметры передавать, если в arParams только ID инфоблока.. Пробовал уже что-то прописать там, но не вышло..
    Да, стоит уточнить, что в компоненте хлебных крошек нужно вывести свойства компонента каталог.. :/
    Ответ написан