Skip to content

Instantly share code, notes, and snippets.

@Elvinz
Last active December 29, 2019 10:50
Show Gist options
  • Save Elvinz/a360016e5bdb19700b0299a83c058278 to your computer and use it in GitHub Desktop.
Save Elvinz/a360016e5bdb19700b0299a83c058278 to your computer and use it in GitHub Desktop.
Битрикс шпаргалка
1. Получить ID текущего раздела (например, в шаблоне компонента каталога)
print_r($arResult["VARIABLES"]["SECTION_ID"]);
2. Проверка авторизован ли как Администратор
<?php
global $USER;
if ($USER->IsAdmin()) echo "<pre>"; print_r($arResult["VARIABLES"]["SECTION_ID"]); echo "</pre>";
3. Выводить список разделов каталога, отобранных по пользовательским полям. Не забыть array("UF_*"). Без компонента, например, catalog.section.list
<?php
//global $USER;
//if ($USER->IsAdmin()) print_r($arResult["VARIABLES"]["SECTION_ID"]);
//$SECTION_IDs = array(24,23);
$rsSections = CIBlockSection::GetList(
array("SORT" => "ASC"),
array("IBLOCK_ID" => 4, "ID" => $SECTION_IDs, "UF_QUICKLINKS" => 1, "UF_CONNECTTOSEC" => $arResult["VARIABLES"]["SECTION_ID"]),
false,
array("UF_*")
);?>
<ul class="quicklinks">
<? while ($arSections = $rsSections->fetch()){?>
<li><a href="/<?= $arSections['CODE'] ?>">
<?= $arSections['NAME'] ?>
</a></li>
<?}?>
</ul>
4. Фильтр у catalog.section.list (т.к. его нет по умолчанию). Выводим список разделов с помощью компонента catalog.section.list, в отличие от приведённого выше способа с CIBlockSection::GetList.
Пока пользуйтесь result_modifier.php, пример: выводить разделы на главной (перед этим создаете пользовательское свойство раздела и выбираете его в настройках компонента catalog.section.list):
<?
if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true) die();
foreach ($arResult['SECTIONS'] as $key => $arSection)
{
if ($arSection["UF_QUICKLINKS"])
unset($arResult['SECTIONS'][$key]);
}
5. Вывести дополнительное поле
$ar_result=CIBlockSection::GetList(Array("SORT"=>"ASC"), Array("IBLOCK_ID"=>$arParams['IBLOCK_ID'], "ID"=>$arResult['SECTION']['ID']),false, Array("UF_H1"));
if($res=$ar_result->GetNext()){echo $res["UF_H1"];}
6. Получение SEO тегов элемента инфоблока
Для получения тегов элемента инфоблока:
//Следующий код выведет нам набор СЕО тегов элемента с указанным ID
$ipropValues = new \Bitrix\Iblock\InheritedProperty\ElementValues($arResult['IBLOCK_ID'], $arResult['ID']);
$arResult['IPROPERTY_VALUES'] = $ipropValues->getValues();
var_dump($arResult['IPROPERTY_VALUES']);
Для получения тегов раздела инфоблока:
$ipropValues = new \Bitrix\Iblock\InheritedProperty\SectionValues($arResult['IBLOCK_ID'], $arResult['IBLOCK_SECTION_ID']);
$arResult['IPROPERTY_VALUES'] = $ipropValues->getValues();
var_dump($arResult['IPROPERTY_VALUES']);
Для получения тегов инфоблока:
$ipropValues = new \Bitrix\Iblock\InheritedProperty\IblockValues($arResult['IBLOCK_ID']);
$arResult['IPROPERTY_VALUES'] = $ipropValues->getValues();
var_dump($arResult['IPROPERTY_VALUES']);
Обратите внимание, что во всех случаях задается ID инфоблока ($arResult['IBLOCK_ID']), а для выборки тегов раздела инфоблока или элемента инфоблока дополнительно указать ID раздела ($arResult['IBLOCK_SECTION_ID']) или ID элемента ( $arResult['ID']), соответственно. Отмечу, что код написан с использованием идеологии разработки D7, что привнесло,в том числе, единообразие в аналогичные методы для разных сущностей. (http://www.codeblog.pro/bitrix1c/poluchenie-seo-tegov-elementa-infobloka/)
7. Скрыть раздел от показа в меню (компонент catalog.section.list)
<ul class="<? echo $arCurView['LIST']; ?>">
<?
switch ($arParams['VIEW_MODE'])
{
case 'LINE':
foreach ($arResult['SECTIONS'] as &$arSection)
{
if ($arSection['ID'] != 434) { /* скрываем раздел Готовая продукция из левого меню*/
...
8. В компоненте каталога 'HIDE_ICONS' => 'N', чтобы показывать внутренние компоненты компонента на фронтенде.
<?
$APPLICATION->IncludeComponent(
"bitrix:catalog.section.list",
"",
array(
"IBLOCK_TYPE" => $arParams["IBLOCK_TYPE"],
"IBLOCK_ID" => $arParams["IBLOCK_ID"],
"CACHE_TYPE" => $arParams["CACHE_TYPE"],
"CACHE_TIME" => $arParams["CACHE_TIME"],
"CACHE_GROUPS" => $arParams["CACHE_GROUPS"],
"COUNT_ELEMENTS" => $arParams["SECTION_COUNT_ELEMENTS"],
"TOP_DEPTH" => $arParams["SECTION_TOP_DEPTH"],
"SECTION_URL" => $arResult["FOLDER"].$arResult["URL_TEMPLATES"]["section"],
"VIEW_MODE" => $arParams["SECTIONS_VIEW_MODE"],
"SHOW_PARENT_NAME" => $arParams["SECTIONS_SHOW_PARENT_NAME"],
"HIDE_SECTION_NAME" => (isset($arParams["SECTIONS_HIDE_SECTION_NAME"]) ? $arParams["SECTIONS_HIDE_SECTION_NAME"] : "N"),
"ADD_SECTIONS_CHAIN" => (isset($arParams["ADD_SECTIONS_CHAIN"]) ? $arParams["ADD_SECTIONS_CHAIN"] : '')
),
$component,
array("HIDE_ICONS" => "N")
);
?>
9. Вывод разделов каталога в 2 колонки требует изменения в компоненте bitrix:catalog.section.list
В файле result_modifier.php:
Код
<?if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();
// Модифицируем пункты для разбивки на колонки
$arCopy = $arResult["SECTIONS"];
foreach ($arResult["SECTIONS"] as $arSection)
{
if ($arSection["IBLOCK_SECTION_ID"] == $arParams["SECTION_ID"])
{
$SUBITEMS = array();
foreach ($arCopy as $subItem)
{
if ($subItem["IBLOCK_SECTION_ID"] == $arSection["ID"])
$SUBITEMS[] = $subItem;
}
$arSection["ITEMS"] = $SUBITEMS;
$SECT[] = $arSection;
}
}
$arResult["SECT"] = $SECT;
?>
Вывод названия прикрепленных свойств.
<?foreach($arResult["PROPERTIES"]["FORMA_TEST"]["VALUE"] as $key2=>$analog):?>
<?$res = CIBlockElement::GetByID($analog);?>
<?if($ar_res = $res->GetNext()){?>
<table class='cart-char-table mobile-break'>
<tbody>
<tr>
<td class="left">
<?=$ar_res["PREVIEW_TEXT"];?>
</td>
<td class="dotted">
<div class="dotted"></div>
</td>
<td class="right bold">
<?=$ar_res["NAME"];?>
</td>
<?}?>
</tbody>
</table>
<?endforeach;?>
<? }?>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment