Существует мнение, что компонент Bitrix:news.line является упрощенным, т.е. функционал урезан настолько, что нельзя даже вывести свойства инфоблока, но никто не говорит о том, что данный компонент можно доработать, даже не вынося его в свое пространство имен, и править его, или попросту использовав API Bitrix выводить нужные свойства.
Вот о свойствах как раз и пойдет речь.
Для того чтобы вывести свойства инфоблока в компоненте Bitrix:news.line необходимо всего лишь добавить в настройки код свойства и всё.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
<?$APPLICATION->IncludeComponent( "bitrix:news.line", "head_news", Array( "ACTIVE_DATE_FORMAT" => "d.m.Y", "CACHE_GROUPS" => "Y", "CACHE_TIME" => "300", "CACHE_TYPE" => "Y", "COMPONENT_TEMPLATE" => "head_news", "COMPOSITE_FRAME_MODE" => "A", "COMPOSITE_FRAME_TYPE" => "AUTO", "DETAIL_URL" => "", "FIELD_CODE" => array(=>"",1=>"",), "IBLOCKS" => array(=>"2",1=>"26",), "IBLOCK_TYPE" => "articles", <strong> "FIELD_CODE" => array( => "PROPERTY_URL", ),</strong> "NEWS_COUNT" => "10", "SORT_BY1" => "ACTIVE_FROM", "SORT_BY2" => "SORT", "SORT_ORDER1" => "DESC", "SORT_ORDER2" => "ASC" ) );?> |
Можно добавить несколько свойств, тогда секция FIELD_CODE изменится на:
1 2 3 4 5 6 |
"FIELD_CODE" => array( => "PROPERTY_URL", 1 => "PROPERTY_URL2", 2 => "PROPERTY_URL3", ), |
где в данном случае URL, URL1, URL2 — это символьный код свойства инфоблока.
Если посмотреть через var_damp или print_r, то можно увидеть что в массиве свойства инфоблока появились
1 2 3 |
[PROPERTY_URL_VALUE] => xxx [~PROPERTY_URL_VALUE] => xxx [PROPERTY_URL_VALUE_ID] => xxx и т.д. |
, ну и теперь стандартным способов выводим нужное свойство, к примеру мне необходимо было вывести подмен ссылки из новости, использовав такую вот конструкцию.
Вывод свойств инфоблока в Bitrix:news.line
1 2 3 4 5 6 7 8 9 |
<?if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();?> <?$this->setFrameMode(true); echo '<div class="news-line">'; foreach($arResult["ITEMS"] as $arItem): $this->AddEditAction($arItem['ID'], $arItem['EDIT_LINK'], CIBlock::GetArrayByID($arItem["IBLOCK_ID"], "ELEMENT_EDIT")); $this->AddDeleteAction($arItem['ID'], $arItem['DELETE_LINK'], CIBlock::GetArrayByID($arItem["IBLOCK_ID"], "ELEMENT_DELETE"), array("CONFIRM" => GetMessage('CT_BNL_ELEMENT_DELETE_CONFIRM'))); echo '<small id="'.$this->GetEditAreaId($arItem['ID']).'"><ol class="older"><li><span class="date time"><i class="fa fa-clock-o"></i>'.$arItem["DISPLAY_ACTIVE_FROM"].' </span>'; echo '<a class="newarticleurl" href="'; echo ($arItem['PROPERTY_URL_VALUE'] ? $arItem['PROPERTY_URL_VALUE'] : $arItem["DETAIL_PAGE_URL"]); echo'">'.$arItem["NAME"].'</a>'; echo '</li></ol></small>'; endforeach; echo '</div>'; |
Пользуйтесь, и читайте данный блог и dev 🙂
Ваш Ковальски