Подгрузка страниц на AJAX для элементов каталога в Битрикс

Для того, чтобы в Битрикс сделать бесконечную AJAX подгрузку страниц каталога, необходимо играться с параметром PAGEN_1 при включенной пагинации.

Выглядеть это будет примерно так:

Clipboard01

Для начала определим в init.php переменную, в которой будем хранить количество элементов, отображаемых на странице при каждой прогрузке:

/*
 * количество элементов каталога на странице
 */
$elem_per_page = 48;

Далее пишем JS код, который будет вызываться при прокрутке страницы. Если мы достигаем подвала сайта — делаем AJAX запрос и добавляем в блок со списком товаров новые:

Читать далее

Редактирование и удаление элементов и разделов из публичной части сайта Битрикс

В 1С-Битрикс управление сайтом есть замечательная возможность, которую очень ценят клиенты и контент-менеджеры. Речь идет о изменении, добавлении и удалении элементов и разделов инфоблока из публичной части сайта, разработанного на Битриксе. Запрограммированный правильным образом сайт имеет такую возможность — при включенном режиме редактирования наведя курсор например на товар, вверху появляются кнопки управления.

MAjppV0hnK4Wme

Далее, если мы планируем поменять информацию о товаре — жмем изменить. При этом всплывет окошко со всеми теми же полями и вкладками, что и при обычном редактировании из админки, но нам уже не нужно искать соответствующий элемент инфоблока и идти по структуре каталога.

Читать далее

Пример скрипта импорта данных из csv файла в инфоблок Битрикс.

Довольно простая заготовка скрипта импорта данных из csv файла. Представим, что у нас есть некий csv файл c комментариями к товарам: к примеру, такой:

nAy993zH1KkeAZ

Нужно все эти данные загрузить в инфоблок. Соответствия свойств в файле и инфоблоке следующие:

  • id_com — идентификатор записи. будем их записывать в поле «внешний код» (XML_ID)
  • id_pr — id товара, к которому этот комментарий относится (не станем его импортировать для простоты кода)
  • name_com — ф.и.о. автора комментария (будем его записывать в пользовательское свойство инфоблока типа «строка» с кодом «FIO»)
  • email_com — email автора комментария (будем его записывать в пользовательское свойство инфоблока типа «строка» с кодом «MAIL»)
  • status_com — статус комментария (будем его записывать в пользовательское свойство инфоблока типа «список» с кодом «IS_SHOW»)
  • date_com — дата написания комментария (будем его записывать в пользовательское свойство инфоблока типа «дата/время» с кодом «DATE»)

Читать далее

Как получить минимальную цену среди торговых предложений товара в Битрикс

Небольшая, но весьма полезная функция получения минимальной цены среди торговых предложений товара в Битрикс:

/*
 * функция получения минимальной цены среди торговых предложений товара с id = $item_id
 */
function get_offer_min_price($item_id){
    $ret = 0;
    
    CModule::IncludeModule("iblock");
    CModule::IncludeModule("catalog");
    // ID инфоблока товаров
    $IBLOCK_ID = 7; 
    $ID = $item_id; 
    $arInfo = CCatalogSKU::GetInfoByProductIBlock($IBLOCK_ID);
    
    if (is_array($arInfo)) {
        $res = CIBlockElement::GetList(Array("PRICE"=>"asc"), 
                                       array('IBLOCK_ID'=>$arInfo['IBLOCK_ID'], 'ACTIVE'=>'Y', 'PROPERTY_'.$arInfo['SKU_PROPERTY_ID'] => $ID), 
                                       false, 
                                       false, 
                                       array('ID', 'NAME'))->GetNext();
        if ($res){
            $ret = GetCatalogProductPrice($res["ID"], 1);
            if ($ret['PRICE']){
                $ret = $ret['PRICE'];
            }
        }
    }
    return $ret;
}

Второй параметр у функции:

GetCatalogProductPrice($res["ID"], 1);

это ID типа цены.

Если же мы хотим, чтобы цена была с отступами тысячей и округлённая (выглядит так симпатичнее):

price2

то можно воспользоваться округлением:

$ret = round($ret);

и реализацией отступов:

$ret = number_format($ret, 0, '', ' ' );

Как получить значение пользовательского свойства типа «список» в Битрикс

Когда мы используем свойства инфоблока типа «список»:

sv-spisok
sv-spisok2

и выдираем его значение GetList-ом, мы получаем только ID значения. К примеру, для «Наличный расчёт» получаем ID=83.

Как же получить саму надпись «Наличный расчёт»? Нас спасёт следующая функция:

Читать далее