Масштабирование картинок в битриксе
Я как-то и не пользовался раньше встроенным, сам обычно писал (с удивлением отмечая, что встроенное почему-то лучше масштабирует с меньшим количеством лишних пикселей). Видимо получилось из-за того, что в документации относительно недавно появилось, хотя вроде и перед глазами, ан не заметил.
В общем так, вот тут подробности и примеры кода. Я же просто помечу для самого себя названия методов:
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)
Не секрет, что в битриксе существует такое понятие, как “отложенные функции”. Они позволяют вставить некоторые данные в начале страницы, при это сгенерировать их в конце кода. Одни считают это аццким костылем, берущем свое начало в первых версиях системы, другие - наоборот удобным механизмом. Мы относим себя ко вторым и сейчас постараемся показать удобства использования отложенных функций. [Читать полностью...]
Bitrix: работаем с картинками в CUser
У каждого зарегистрированного пользователя в битриксе есть пачка полей, в которых хранятся логин, пароль, мыло и всякая фигня, типа мест работы, асек. Хранятся так же картинки (например аватарка). Поле это называется PERSONAL_PHOTO.
JavaScript: аналог foreach
В php есть цикл foreach для перебора ассоциятивных массивов (тех, у которых ключи - это не цифры идущие по порядку). В JavaScript тоже возможно создавать такие массивы, однако специального цикла для перебора значений нету. Все делается с помощью for:
[Читать полностью...]
IECollection - проверяем верстку в разных IE
По секрету скажу: у меня 2 ноутбука. На главном стоит ie6, а на другом - ie8. Обычно то, что заработало под ie6 на ie8 пашет замечательно, но не всегда (особенно скрипты), поэтому если клиенты начинают ругаться, что не работает, я беру второй ноут и внимательно все проверяю.
Дак вот есть добрые люди, которые заставили ie работать автономно и объединили это в отдельный пакет программ :) Качаем и наслаждаемся
