Pull to refresh

Маленькие хитрости платформы 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. При желании Вы можете самостоятельно их изучить.

Всем спасибо…
Tags:
Hubs:
You can’t comment this publication because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author’s username will be hidden by an alias.