Недокументированные функции битрикс

http://alexvaleev.ru/nedokumentirovannie-funkcii-bitrix/

Ваш отзыв

Масштабирование картинок в битриксе

Я как-то и не пользовался раньше встроенным, сам обычно писал (с удивлением отмечая, что встроенное почему-то лучше масштабирует с меньшим количеством лишних пикселей). Видимо получилось из-за того, что в документации относительно недавно появилось, хотя вроде и перед глазами, ан не заметил.

В общем так, вот тут подробности и примеры кода. Я же просто помечу для самого себя названия методов:

CIBlock::ResizePicture
CFile::ResizeImageGet

Ваш отзыв

Правильная пагинация в битриксе

Сейчас я знаю о двух вариантах изготовления пагинации. Один на компонентах 2.0:

$navString = $db_list2->GetPageNavStringEx($navComponentObject, “подпись пагинатора”, “шаблон пагинатора”, “флаг показывать всегда”);

Другой - старый проверенный:

echo $res->NavPrint(”",false,false,’/bitrix/templates/***/iblock/catalog/ibl_navprint.php’);

Честно не рылся в компоненте, но по внешней работе и характерным ошибкам разници не заметил, то есть сама генерировалка явно одинаковая.

Суть проблемы: выбираем в пагинации вторую страницу, а потом жмем на ссылку на раздел (то есть должны попасть на первую страницу), выводить продолжает вторую страницу.

Метод лечения:

$res = CIBlockElement::GetList($arSort, $arFilter, false, Array(”nPageSize”=>8, “iNumPage”=>($_REQUEST['PAGEN_1']?$_REQUEST['PAGEN_1']:1)),
$arSelect);

При вызове GetList принудительно указываем номер страницы: если параметр от пагинации есть (то есть находились например на второй странице), то указываем его, если нету - то 1.

Вообще достаточно странно, ведь все эти функции я еще в пятой версии битрикса помню, а такие косяки до сих пор всплывают. Хотя может я чего не понимаю и тут есть тайный смысл?

Ваш отзыв

Подсчет количества элементов в выборке

Сегодня столкнулся вот с такой проблемой: надо узнать сколько элементов будет в выборке из инфоблока непосредственно до ее выполнения. В принципе это не настолько критично, так как результаты можно просто складировать в массив, а потом посчитать длину массива, но как оказалось битрикс тоже умеет это делать, хоть и хитрым способом. (В документации ТАКИЕ подробности появились, видимо, не очень давно так как я о них не знал)

Итак, подсчет количества элементов в разделе:

$db_list = CIBlockSection::GetList(Array(’SORT’=>’ASC’), array(’IBLOCK_ID’=>$ar_res['ID'],’ACTIVE’=>’Y',’CNT_ACTIVE’=>’Y'),true);

Если последнее свойство true - то производится подсчет всех элементов в разделе. Но добавилось вот такое:

  • если в $arFilter дописать ELEMENT_SUBSECTIONS => (Y|N) - то будет производиться/не производиться подсчет элементов в подразделах (по умолчанию считает)
  • если в $arFilter дописать CNT_ALL => (Y|N) - если есть модуль документооборота, то будет считать/не считать неопубликованные элементы (по умолчанию не считает)
  • если в $arFilter дописать CNT_ACTIVE => (Y|N) - то учитывает/не учитывает активные элементы. Причем смотрит и галочку активности, и даты активности

Далее CIBlockElement. Оказалось, что после вот такой надписи:

$num = CIBlockElement::GetList(array(),array(’IBLOCK_ID’=>5),array());

В $num окажется количество элементов в выборке.

Ваш отзыв

И снова здравствуйте :)

После некоторого отсутствия по причине службы автора в армии блог возобновляет свою работу :)

Ваш отзыв

Bitrix: Всплывающее окно добавления элемента (как в админке)

Видели в админке, если сделать поле у инфоблока “привязка к элементам”, при нажатии на кнопочку “…” всплывает окно с фильтром по каталогу, в котором элемент выбирается.

Потребовалось одному клиенту сделать нечто подобное, но в пользовательской части сайта (так как админку под это переделывать не резон) . Компоненты, которые это реализуют, если таковые имеются, искать не стали, так как не нравятся они нам в принципе - 90% проще руками написать: будет меньше весить.

Само всплывающее окно в админке подключается вот такой вот штучкой:

Где n - name input-а, в который отправится результат, а k - хз что такое. Собственно, воткнув такой код, мы и получим всплывающее окно. Но в админке еще присылается название элемента. Без правки файлов поймать его можно полем с вот таким вот id: sp_

Собсвтенно и все. Как прислать еще какие-нибудь свойства пока незнаю, описания функций, которые исплюзуются в документации естесственно нету

Ваш отзыв

Bitrix: отложенные функции (ShowTitle, ShowPageProperty)

Не секрет, что в битриксе существует такое понятие, как “отложенные функции”. Они позволяют вставить некоторые данные в начале страницы, при это сгенерировать их в конце кода. Одни считают это аццким костылем, берущем свое начало в первых версиях системы, другие - наоборот удобным механизмом. Мы относим себя ко вторым и сейчас постараемся показать удобства использования отложенных функций. [Читать полностью...]

Отзывов (9)

Bitrix: работаем с картинками в CUser

У каждого зарегистрированного пользователя в битриксе есть пачка полей, в которых хранятся логин, пароль, мыло и всякая фигня, типа мест работы, асек. Хранятся так же картинки (например аватарка). Поле это называется PERSONAL_PHOTO.

[Читать полностью...]

Ваш отзыв

JavaScript: аналог foreach

В php есть цикл foreach для перебора ассоциятивных массивов (тех, у которых ключи - это не цифры идущие по порядку). В JavaScript тоже возможно создавать такие массивы, однако специального цикла для перебора значений нету. Все делается с помощью for:
[Читать полностью...]

Ваш отзыв

IECollection - проверяем верстку в разных IE

По секрету скажу: у меня 2 ноутбука. На главном стоит ie6, а на другом - ie8. Обычно то, что заработало под ie6 на ie8 пашет замечательно, но не всегда (особенно скрипты), поэтому если клиенты начинают ругаться, что не работает, я беру второй ноут и внимательно все проверяю.

Дак вот есть добрые люди, которые заставили ie работать автономно и объединили это в отдельный пакет программ :) Качаем и наслаждаемся

Ваш отзыв