iЛаборатория » 1С-Битрикс

Усовершенствованный компонент 1С-Битрикс bitrix:menu

Добрый день, дорогие читатели!

Если Вы следите за моим  twitter‘ом, то наверное, читали твит анонс, в котором я говорил про пост о 1С-Битрикс и jQuery меню. В данный момент, решил не много отдохнуть от работы и диплома, поэтому выкладываю пост.

Как видно из названия, в данном посте пойдет речь о стандартном компоненте 2.0 CMS 1С-Битрикс, который я немного усовершенствовал под свои нужды. Начну из далека, по работе дали задание, в котором требуется реализовать раскрывающиеся меню с сохранением раскрытых пунктов при переходе и реализовать все это на файлах меню (.left.menu.php). Как только я получил данное задание, задумался о том, как же реализовать меню на файлах? До этого я сталкивался только с меню строящимся из информационных блоков. Сразу бросается в глаза, что можно использовать стандартный компонент bitrix:menu, в котором есть все необходимые настройки, кроме одной: вывод полного меню на любой странице, даже после перехода.

Формулировка задачи

Во-первых, необходимо доработать компонент bitrix:menu и научить его всегда выводить выбранное меню (left) от корня сайта. Во-вторых, привязать меню на jQuery с плагином jQuery.cookie. Со вторым пунктом все намного проще, так как наработки в данном направлении уже имеются и о них я писал на блоге (пост “Меню на jQuery“). С первым в общем-то тоже проблем не было, нужно было только придумать как все красиво подправить, чтобы это работало, было удобно и можно было использовать в других проектах. С постановкой задачи мы определились, пора приступать к реализации.

Читать полностью… »

Демонстрация пользовательской формы 1С-Битрикс

Демонстрация пользовательской формы добавления элемента в информационный блок 1С-Битрикс.



Своя форма добавления элемента в 1С-Битрикс

Добрый день!

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

С задачей мы определились, пора приступить к реализации, первым шагом к достижению нашей цели будет – создание инфоблока. Думаю кто работает с CMS 1С-Битрикс, знают как это сделать, но все же я напишу подробнее этот шаг. Во-первых, создаем обычный тип инфоблока, даем ему нужное название и так далее. Во-вторых, в данном типе инфоблока создаем информационный блок, опять таки даем ему имя, настраиваем, но дальше самое интересное, в пункте “Файл для редактирования элемента, позволяющий модифицировать поля перед сохранением“, вписываем путь, пока на несуществующий файл: “/bitrix/php_interface/include/iblock_actions.php“. Для чего нам это нужно я объясню ниже, сейчас главное сделать подготовительные работы. Последним штрихом будет заполнение пункта с именем: “Файл с формой редактирования элемента“, опять таки вставляем ссылку на несуществующий пока что файл: “/bitrix/php_interface/include/iblock_element_edit.php“. Все на этом наши подготовительные работы с информационным блоком закончены.




Вторым шагом будет создание формы добавления элемента, для этого перейдем в папку “/bitrix/php_interface/” и создадим новую папку с именем “include“, думаю все понимают что имя папки может быть и другим, но для этого не забудьте исправить пути в первом шаге. В папке “/bitrix/php_interface/include/” создаем файл, который будет содержать нашу форму добавления товара, имя файлу даем следующее: “iblock_element_edit.php“. Все теперь нам надо написать форму.

Читать полностью… »

Прохождение курсов по 1С-Битриксу

Добрый вечер!

По работе прохожу курсы тестирования по CMS 1С-Битрикс, на данный момент прошел 11 тестов из 12. В данном посте хотелось бы поделиться своими ответами на тест BX-ADM002-3, но для начала расскажу, как я прохожу данные тесты. Во-первых, хотелось бы отметить, что я не всегда понимаю, что именно требуется в вопросе (некоторые вопросы поставлены, через одно место), вот именно в таких случаях и выручают ответы. Во-вторых, хочу сказать, что не совсем понимаю смысл данных тестов для разработчиков. Информации именно для разработчиков там очень мало, больше это настройка и организация. Ну ладно, как говориться проходи молча и радуйся, что бесплатно.

Лично я прохожу эти тесты примерно так: сначала читаем курс, отвечаем на промежуточные тесты по паре вопросов, потом на не основной учетной записи проходим тест, если все отлично и все понимаем, то сдаем на основной, если проблемы и не понимание, то пользуемся ответами. По мне это достаточно честный способ сдать все тесты и сильно не нервничать (нервы могут быть из-за того, что на некоторые тесты всего одна попытка). Как говорится главное то все равно практика и умение работать с системой, а данные знания можно получить только, если достаточно долгое время плотно работать с CMS 1С-Битрикс.

В общем вот мои ответы, я сдал курс на 280 баллов, но за правильность не ручаюсь, вопросы помеченные “+” – в них я уверен на 99% (заметьте, что не на 100%).

Курс BX-ADM002 часть 3.

Читать полностью… »

Работа. Опять 1С-Битрикс

«Пишите код так, как будто сопровождать его будет

склонный к насилию психопат, который знает, где вы живете». (с)

С. Макконелл

Как я уже писал работаю я сейчас с CMS 1С-Битрикс и опять таки, как я уже говорил система имеет свои плюсы и минусы. В данный момент у меня задание: реализация добавления опроса зарегистрированным пользователем. Задача не скажу что совсем уж сложная, необходимо написать компонент 2.0 с определенными настройками и в общем то все. Но как говорится не бывает все так просто…



Основная проблема заключается в том, что по умолчанию в редакции “Стандарт” возможно добавлять опросы только администратору и продвинутым юзверям, нас это не устраивает и мы реализуем компонент. С реализацией проблем не возникло, в данный момент компонент написан и запросто выполняет следующие действия:

  • настройка и добавление опроса;
  • настройка и добавление любого количества вопросов;

Я радостный сообщил о том, что разработка данного компонента закончена, но вскоре обнаружил, что оказывается не один опрос, созданный через мой компонент, не активирован. Ну тут все понятно, необходимо просто поставить вместо значения “N” параметра ACTIVE – “Y”, но не тут то было…После установки параметра “Y”, т.е. мы явно указываем, что необходимо сразу активировать наш опрос, получаем ошибку о невозможности записи опроса в базу данных…и что бы я не пробовал и передача из формы, и установка checkbox’a, как в админке – всюду эта ошибка. Единственное что запросто “съедала” функция – это TRUE, но при этом в базу записывалось значение “N”…

В общем после 3 часов секса с данной проблемой, я решил применить более грубую силу и воспользовался, так скажем хаком, т.е. я обновил запись опроса не через методы класса, предназначенного для этого, а на прямую, через класс CDatabase. В общем все работает, а данный хак, оказался даже более предпочтительным, так как теперь опрос становится активным только после добавления вопросов.

Но Вы не думайте, что на этом мои приключения кончились, после я нашел пару ошибок в компоненте рандома опросов, который тоже написал до этого :) За что себя люблю, ни когда не дам себе скучать :) Всегда есть пропущенные и не пофиксиные ошибки :) Но как говорится все мы человеки и все мы ошибаемся :)

В настоящее время данные компоненты функционируют, но работа над ними еще не окончена. И что то мне подсказывает, что это не конец…

С уважением, Главный Лаборант!

Работа -> трабл() или хитрый Битрикс

Всем привет!

Сейчас, я думаю, все программисты меня поймут! В общем дело такое, пишу по работе класс для системы CMS 1С-Битрикс, с заданием все понятно, единственная проблема была это использование связки PHP (само сабой) + MySQL + AJAX.

А программисты поймут меня в том, что: когда придумываешь как красиво все исполнить и это не получается – это очень обидно…

Мускул мы используем для хранения данных, аяксом их оттуда вытаскиваем или наоборот записываем. Конечно же есть какие то данные, но в данном контексте не суть какие. Самое трудное это использовать встроенный класс для работы с базой данных, так как писать отдельный нет ни какого желания.

Придумал выход. Выход такой: объявляем статическую переменную в классе с именем $_DBs, объявляем и пишем статический класс, вот листинг:

1
2
3
4
5
6
        //Статический метод - через него получаем объект 
	//класса CDatabase для работы с базой данных
	public static function _setDBStatic(CDatabase $db)
	{
		Rating::$_DBs = $db;
	}

Перед созданием объекта нашего класса мы вызываем данный статический метод и по идее у нас для всех классов должен существовать статический объект класса CDatabase, что уже хорошо, но не совсем нас устраивает. Не устраивает нас тем, что работать с базой данных через него очень опасно, так как он один на все объекты, в итоге пишем открытый метод который просто копирует данный объект в закрытый объект каждого экземпляра нашего класса, вот листинг:

1
2
3
4
        public function _setDBObject()
	{
		$this->_DB = Rating::$_DBs;
	}

По идее данный класс должен без проблем перекочевать в закрытую переменную с именем $DB и далее в классе мы можем спокойно к нему обращаться, но выскакивает ошибка:

Fatal error: Call to a member function Query() on a non-object in {...}/class.Rating.php on line 140

Как видно из описания ошибки – нет объекта. И вот что я думаю, либо я на ночь глядя не соображаю, либо хитрые разработчики 1С-Битрикса прописали волшебный метод __clone(), который просто ничего не клонирует. И вот как быть? В общем надо колдовать…или поспать…

Введение в Компоненты 2.0 1С-Битрикс. Часть 2

Не знаю долгожданное или нет, но все же продолжение статьи о написании компонента 2.0 для системы 1С-Битрикс (Введение в Компоненты 2.0 1С-Битрикс. Часть 1). Во второй части мы поговорим о написании простого шаблона для нашего компонента.

Постановка задачи: создать простейший стандартный шаблон.

Так с задачей вроде все понятно, теперь давайте вспомним, что у нас вообще есть? У нас написан файл описания (.description.php) и написан файл перевода (.description.php), созданы папки /images/, /lang/ru/.

Еще в самом конце я говорил про файл component.php – этот файл и есть наш компонент, точнее та его часть которая отвечает за обработку чего – либо, т.е. программный код. В нашем случаи данный файл будет обрабатывать введенные пользователем данные, т.е. логин, пароль и остальное.

И так приступим!

Читать полностью… »

Введение в Компоненты 2.0 1С-Битрикс. Часть 1

Доброго времени суток!

Как видно из названия поста сегодня мы поговорим о написании простейшего компонента для CMS 1С-Битрикс. Компонент 2.0 отличается от Компонента 1.0, тем что они построены на MVС (Model-view-controller). Начать думаю стоит с задания. Сейчас в качестве примера мы сделаем Компонент 2.0, который будет выводить форму регистрации с нашими полями (а-ля упрощаем стандартный компонент).

Кого заинтересовала прошу под кат.

Читать полностью… »