Nikovit <Путешествия и разработка>

Битрикс не выводится свойство Файл

В этой статье я расскажу о способе вывода свойства типа файл в битриксе.

Добавляем новое свойство в настройках инфоблока.

свойство типа файл.png

Битрикс. Добавляем количество товара в корзину через параметр URL

Для добавления в корзину товара и количества через параметр URL я использую следующий скрипт JS
<script type="text/javascript">
    $(document).ready(function() {
        $('input.quantity').change(function() {
            let obAddToCartLink = document.getElementById('addtoCart');
            console.log(obAddToCartLink);
            let link_str = String(obAddToCartLink);
            replace_str = link_str.replace(/(quantity=)[0-9]+/ig, '$1'+$(this).val());
            obAddToCartLink.setAttribute('href', replace_str);
        });
        $('input.quantity').keypress(function() {
            $(this).trigger('change');
        });
        $('a.price-card__quantyty-plus, a.price-card__quantyty-minus').click(function(e){
            e.preventDefault();
            e.stopPropagation();
            var oThisQuntityInput = $('input.quantity:first', $(this).parent().parent());
            var iThisQuantity = parseInt(oThisQuntityInput.val());
            var iSubtrahend = 1;
            if ($(this).hasClass("price-card__quantyty-plus"))
            {
                if (iThisQuantity < 2)
                {
                    return false;
                }
                iSubtrahend = iSubtrahend * (-1);
            }
            var iThisQuantityNew = iThisQuantity + iSubtrahend;
            oThisQuntityInput.val(iThisQuantityNew);
            oThisQuntityInput.trigger('change');
        });
    });
</script>

И HTML код:
<a class="price-card__quantyty-plus" href="#">+</a>
<input type="text" class="quantity price-card__quantyty-count" name="QUANTITY_1" value="1" id="QUANTITY_1">
<a class="price-card__quantyty-minus" href="#">-</a>
<a href="<?= $arResult["ADD_URL"] . '&quantity=1' ?>" id="addtoCart" class="addtoCart btn-basket">В корзину</a>

Суть JS скрипта в том что мы меняем значение в URL quantity=1 на значение которое передается из input с классом quantity.

Битрикс подсветка синтаксиса кода в блоге

Для подсветки синтаксиса как на этом сайте, мы воспользуемся библиотекой highlightjs
Преимущество этой библиотеки в том - что не нужно указывать конкретный язык программирования в примерах кода, библиотека автоматически определяет язык программирования.

Скачиваем библиотеку https://highlightjs.org/download/

В файле header.php подключаем саму JS библиотека и CSS стили(различные стили оформления кстати можно посмотреть тут https://highlightjs.org/static/demo/ ):
<?
    // highlightjs
    Asset::getInstance()->addCss(SITE_TEMPLATE_PATH . '/css/highlightjs.css');
    Asset::getInstance()->addJs(SITE_TEMPLATE_PATH . '/js/highlight.pack.js');
?>

Битрикс выводим название раздела

Для вывода названия раздела в битриксе можно использовать следующую конструкцию.
<?
$id_section =$arResult['VARIABLES']['SECTION_ID'];
$res = CIBlockSection::GetByID($id_section);
if($ar_res = $res->GetNext())
    $name_section = $ar_res['NAME'];
$APPLICATION->SetTitle($name_section);
?>

Битрикс вывести описание раздела

Для вывода описания раздела в битриксе я пользуюсь следующей конструкцией:
<?
CModule::IncludeModule('iblock');
$dbSect = CIBlockSection::GetList(Array("SORT"=>"ASC"), Array("ID"=>$arResult["VARIABLES"]["SECTION_ID"], "<=LEFT_BORDER" => $arResult["LEFT_MARGIN"], ">=RIGHT_BORDER" => $arResult["RIGHT_MARGIN"]), true);
if($arSect = $dbSect->GetNext()) {echo $arSect["DESCRIPTION"];}
?>
Этот код вставляем в файл section.php

Функция дебага в Битрикс

2019-02-19.png

В этой статье я поделюсь функцией которой постоянно пользуюсь для дебага массива в Битрикс управление сайтом.

В каталоге bitrix находим папку php_interface и в файле init.php пишем следующую функцию:
function debug($data){
    echo '<pre>' . print_r($data, 1) . '</pre>';
}

И теперь когда нам нужно посмотреть какие данные приходят от битрикс в массиве просто вызываем эту функцию, например:
debug($arResult);

Битрикс. Закрываем только определенные ссылки меню от индексации

Очень часто SEO специалисты просят закрыть от индексации определенные пункты меню битрикс.

И так преступим:

1. Открываем файл нужного нам меню, обычно этот файл находится в корневом каталоге сайта на битрикс, и его название начинается с точки, к примеру .top.menu.php
Добавляем еще один параметр "noindex" => true в массив параметров меню.
Array(
   "Компания", 
   "/company/", 
   Array(), 
   Array("noindex" => true,),
   "" 
),

2. Заходим в шаблон компонента меню и в цикл вывода меню добавляем условие - если параметр noindex == true, то оборачиваем пункт меню в noindex, если нет то выводим как обычно.
<?php if ($arItem["PARAMS"]["noindex"] == true): ?>
    <noindex>
        Код шаблона меню
    </noindex>
<?php else: ?>
    Код шаблона меню
<?php endif; ?>