Как стать автором
Обновить

Маленькие хитрости платформы 1С-Битрикс. Часть 1

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

Всем привет!
Перед тем как начать топик по теме я сделаю маленькое предисловие, что бы было понятно как относиться к автору и какими мыслями он живет.

Мой путь в мир IT начался еще в школе в старших классах, уже тогда я знал что хочу связать свою профессию с Великим и Ужасным миром технологий. По окончании школы поступил в колледж на специальность с длинным и малоинформативным названием что я даже затрудняюсь вспомнить, но тоже связанной с компьютерами. Вообще в то время был пик спроса на такого рода специальности. Во время первого года учебы, у мне была предложена работа в информационном отделе колледжа, от которой я не смог отказаться так как это мне сулило много бонусов в учебе и в финансовом плане (хотя платили мало). После 3,5 года учебы, передо мной стоял выбор пойти в армию на 2 года или пойти учится в институт, устав от бесконечной нервотрепки на учебе и работе я решил взять себе отпуск и пошел в армию, тогда мне шел 21 год.

В армии солдатам что бы как то заработать деньги (себе на «приличный ужин» — батон, доширак, пакетик кофе и майонез) приходилось воровать, строить гаражи офицерам и т.д. а мне частенько доводилось собирать компьютеры из старых комплектующих валяющихся на технической позиции части. До сих пор помню эту гору техники которую привезли на утилизацию, чего там тока не было: мониторы огромных размеров, серверные стойки, жесткие диски по 1-3 гб. и т.д. Честно говоря в армии предвзятое негативное мнение о тех кто как то связан с компьютерами: можно сказать что их считают «неженками», и что бы это исправить сержантский состав старается больше направлять их на физическую работу, в наряды и т.д. По окончании службы у меня была возможность устроится в один из Подмосковных офисов разработки «антивируса Касперского», но из-за проблем с пропиской было решено вернулся домой.

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

мое рабочее место
Вот так выглядело мое рабочее место

На протяжении 3-х лет работы я развивал свои познания в технике, программном обеспечении (часть моей работы состояла в создании, обработке видео и аудио материала) и в малой доле составлением программ (парадокс, должность «программист»).

Около полугода назад я первый раз зашел на Хабр, и вот с тех пор являюсь постоянным читателем. В настоящее время я работаю в фирме в которой одним из направлений деятельности является разработка интернет решений на платформе 1С-Битрикс. Я успел уже принять участие в разработке нескольких разносторонних проектов: геоинформационный проект «Локатор ГИС», а так же лично собрал типовое решение для фан-сайтов игры «World of tanks».

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

В моей первой статье пойдет речь о том как можно расширить функционал компонентов средствами api Битрикс.

Задача: Как вставить во всплывающем окне редактирования компонента свою опцию.


Пример вставки своей опции
Пример вставки своей опции.

Ответ:

Для начала нужно открыть в редакторе файл компонента component.php и в конец его вставить следующий код.

Формируем массив с параметрами для открытия всплывающего окна.
«URL» — хранится путь до файла, который будет открыт при нажатии на нашу опцию. Сюда же вставляются передаваемые параметры. Передача осуществляется методом POST.
$menu_edit_url = $APPLICATION->GetPopupLink(array(
"URL" => $componentPath."/edit.images.menu.php?lang=".LANGUAGE_ID.
"&site=".SITE_ID."&back_url=".urlencode($_SERVER["REQUEST_URI"])."&path=".urlencode($path))
);


Далее формируем массив с данными для отображения нашей опции.
$arIcons[] = Array(
"URL" => 'javascript:'.$menu_edit_url,
"ICON" => "bx-context-toolbar-edit-icon",
"TITLE" => GetMessage("ADD_ICON_TITLE"),
"DEFAULT" => true,
);

//выводим нашу опцию на экран
$this->AddIncludeAreaIcons($arIcons);


Теперь в файле который мы вызываем edit.images.menu.php нужно вставить следующий код:

require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_admin_before.php");
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_admin_js.php");

CUtil::JSPostUnescape();

$obJSPopup = new CJSPopup('',
array(
'TITLE' => "Моя опция",
'ARGS' => "lang=".urlencode($_GET["lang"])."&site=".urlencode($_GET["site"])."&back_url=".urlencode($_GET["back_url"])."&path=".urlencode($_GET["path"]),
)
);

//показать заголовок окна
$obJSPopup->ShowTitlebar();

//показать иконку описания, так же ниже можно вывести текст описания
$obJSPopup->StartDescription('bx-core-edit-menu');

Описание



//начать вывод основного контента окна, так же сюда можно вставлять описание стилей и код javascript
$obJSPopup->StartContent();

Содержание окна



//вывести внизу кнопки "сохранить" и "отмена", при нажатии на кнопки данные передаются методом POST в это же окно
$obJSPopup->ShowStandardButtons();

require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/epilog_admin_js.php");


Вот и все, путем несложных действий мы добились желаемого результата)
В данном примере использован код взятый с файла компонента /bitrix/menu/component.php и главного модуля /modules/main/public/menu_edit.php. При желании Вы можете самостоятельно их изучить.

Всем спасибо…
Теги:
Хабы:
Данная статья не подлежит комментированию, поскольку её автор ещё не является полноправным участником сообщества. Вы сможете связаться с автором только после того, как он получит приглашение от кого-либо из участников сообщества. До этого момента его username будет скрыт псевдонимом.