 
        
        Разработка интернет-приложений.-2
.pdfдизайна,ностраницахсайтаусловием,чтосуфайфиксдолажен бытьзаданотличнымтого,которыйиспользуетсявшаблоне.
| Дляразмещениявключаемойоб | ластивыполнитеследующее: | 
Откройтедляредактиршаблсайтаилиования
страницуввизуальномредакторе.
ДобавьтекомпонентВставкавключоблаемойсти (bitrix:mainвшаблонсайиливтело.страницыinclude)настройтеего
параметры.
Созданиевключ аемыхобластможбытьвыполненой:
изадминистративногораздМефланеджерейлов (КонтентСтрук> сайФайлы>типапкиура),создавфайл соответствующимименем;
изпубличногоразделасайтврежимеправки.Втех местах,гдепредполагаетсявывод включаемыхобластей,будутпоказаны иконкидлябыстпекрсехзданиюогоэтихобластей.
ПослевыборакомандыДобавитьобластьбудетзапущенвизуальный редсозданияактлядержимоговключобласти.Привыбореемй
командыДобавитьоблакакстPHPь нетвозможнымдобавление областиврежимеРНРкода
Аналогичнопекрейтидактированиювключаемыхобластей
можно:
•непосредстизпубличногораздсайтврежимеланноправки;
•лиадминистбозразде,открывлативногоедактирования соответствующийфайлвМенеджерефайлов.
Включоблсоздаютсястиемыенаосновешабло,хравнящихсяов папкахсименем/page_templates/:
/bitrix/templates/.default/page_templates/ - еслиданный шабвклоючбластиниспоемойдвсехшаблоновьзуетсядизайна сайта;
/bitrix/templates/<идентификатор шаблона>/page_templates/ - есдляшаблонаисайтаиспользуются отдельныешаблвключобластейны. емых
21
 
Чтобыввизуальномредактореможнобылвыбиратьшаблон,на основекот здаетсярогоедактируемаяобласть,списокшабл оновдля редактируобластейдолженбытьдобавленмыхфайл.content.php.
Файл.contentхранитсявпапке/.phpageвкаталогеtemplates/ соответствующегошаблонасайта.
| 2.7. Лабораторнаяработа« | Созданиекомпонента.Настройкамодуля | 
 | 
| универсальногосписка | » | 
 | 
| Цель работы | 
 | 
 | 
| Создать компонеинастромодулнит тьверсальногосписка | . | |
| Порядвыполненияк | лабораторнойработы | 
 | 
| Компонент - этол гичзавекодршёнски,преддляназначенный | 
 | |
| извлечеинформацииияфоблоковдругисточниковх | 
 | 
 | 
| преобразованияеёHTML | -коддляотображенияввидефрагментовweb | - | 
| страниц.Соизтоитобскомповенконтроллер( н)ишаблонаента | 
 | 
 | 
| (представление)Компонент. ,помAPIдногощьюилинескольких | 
 | 
 | 
| модулей,манипулируетданными.Шаблонкомпоневыводитданнтаые | 
 | 
 | 
| настраницу. | 
 | 
 | 
Рисунок7 – Класхемасическаярабкомпонентаты
22
 
Порясозданиясобственомпонентаок
Выделитьнеобходимыйphp -квотдельныйфайлдлятого,чтобы использеговвидетвызываемогомватьфайланесложн.Но компонентещенужноподключитьвсиспомощтеу ьюфайлаописания, которыйопознаетсяядромBitrixврезультатечегоFramework,
пользоватевидитвизуаредактореиконкульс азваниемом компнастрнтаи ожеегосвойства.ивать
| 
 | Напомним,чток мпонент | – этовыделенныйотдельныйфайлphp | - | |
| кодсза | кончефункциональнной,файлрегистрациикомпв остьюнента | 
 | 
 | |
| системеописегоараметровния,такжефайлылокализации. | 
 | 
 | 
 | |
| 
 | Регистрациякомпонента | 
 | 
 | 
 | 
| 
 | Выднеобходимоголениеphp | -кодавотдельныйфайл. | 
 | |
| 
 | Созданиефайлаописания.description.php | 
 | 
 | |
Размещениефа йловпапкесобственномпространстве
имен.
Задпараметрниевкодекомпонентав Локализация
Подготовкафайловстекстовымиконстантамидля
компонентаифайларегистрации: /lang/ru/<имякомпонента>/componentи .php
/lang/ru/<имякомпонента>/.descrip tion.php
Внесениеизменвкобоихдфайловниякомпонентадля использоваэтихконстантподк( файлаияючениеокделализациится припомощифункцииIncludeTemplateLangFile).
Рассмпримеротримзданиякомпдлясообщенийнента администраторуобошибке.
Спомощьюэтогокомпонентаможнореализоватьфункционал, которыйбыпозволялпользсоователямбщатьтветствезаконтентным онайденнойсайтеоши.Ошибкаудеткевысылатьсяпочтовым уведомлением.Алгорирабп льзователятыскомпонентомочень простой:еслипользовательнаходитпорталеошибку, онвыделяет текст,нажим аетCtrl+EnterиполучаетформуРис( 8).нок
23
 
Рисунок8 – Фобратнойрмасвязислучаеобнаруженияошибки
Таккаксообщениеошибкбудетотправленонапочту,то потребуется оздатьновыйпочтовыйтип.
•ПерейдитенастраницуНастройки> продукта> и ПочтовыесобытияТипыпочтовых> событий.
•Заполяолнитеформы:
•ПерейдитенастраницуНастройки> продукта> и ПочтовыесобытияПочтовые> шаблоны.
•Нажмитев контекстнпанелинаДобша,овитьблонйткроется формасоздшаблона. ния
•Задайтешаблондлясозданнпочтовоготипа .бытия
Создайвсобспространствевенномименпапкуfeedbackсо .error следующейструктурой:
папка /images файл feedback.gif папка /templates папка /.default файл script.js файл template.php
файл .description.php файл .parameters.php файлcomponent.php
Файлfeedback.gif - иконка,котбудетраятображввизуалтьсяном
редакторе.
24
код файла script.js:
BX.bind(document, "keypress", SendError);
function SendError(event, formElem)
{
event = event || window.event;
if((event.ctrlKey) && ((event.keyCode == 0xA)||(event.keyCode ==
0xD)))
{
var Dialog = new BX.CDialog({ title:Нас обнаруженайте" ошибка!!", head:Вчёмзаключается"ошибка?",
content: '<form method="POST" id="help_form">\
<textarea name="error_desc" style="height: 78px; width: 374px;"></textarea>\
<input type="hidden" name="error_message"value="'+getSelectedText()+'">\
<input type="hidden" name="error_url" value="'+window.location+'">\
<input type="hidden" name="error_referer" value="'+document.referrer+'">\
<input type="hidden" name="error_useragent" value="'+navigator.userAgent+'">\
<input type="hidden" name="sessid" value="'+BX.bitrix_sessid()+'"></form>',
resizable: false, height: '198', width: '400'});
Dialog.SetButtons([
{
25
'title': 'Отправить', 'id': 'action_send', 'name': 'action_send', 'action': function(){
BX.ajax.submit(BX("help_form")); this.parentWindow.Close();
}
},
{
'title': 'Отмена', 'id': 'cancel', 'name': 'cancel', 'action': function(){
this.parentWindow.Close();
}
}
]);
Dialog.Show();
}
}
function getSelectedText(){ if (window.getSelection){
txt = window.getSelection();
}
else if (document.getSelection) { txt = document.getSelection();
}
else if (document.selection){
txt = document.selection.createRange().text;
}
else return; return txt;
}
26
код файла template.php:
<?
CUtil::InitJSCore(array('window', 'ajax')); ?>
код файла .description.php:
<?
if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true) die();
$arComponentDescription = array( "NAME" => "Send Error", "DESCRIPTION" => "Send Error", "ICON" => "/images/feedback.gif", "PATH" => array(
"ID" => "utility",
),
);
?>
код файла .parameters.php:
<?
if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();
$arComponentParameters = array(); ?>
код файла component.php:
<?
if (check_bitrix_sessid() && $_SERVER['REQUEST_METHOD'] == "POST" && !empty($_REQUEST["error_message"]) && !empty($_REQUEST["error_url"]))
{
$arMailFields = Array();
27
 
$arMailFields["ERROR_MESSAGE"] = trim ($_REQUEST["error_message"]);
$arMailFields["ERROR_DESCRIPTION"] = trim ($_REQUEST["error_desc"]);
$arMailFields["ERROR_URL"] = $_REQUEST["error_url"];
$arMailFields["ERROR_REFERER"] = $_REQUEST["error_referer"];
$arMailFields["ERROR_USERAGENT"] = $_REQUEST["error_useragent"];
CEvent::Send("BX", SITE_ID, $arMailFields);
}
$this->IncludeComponentTemplate(); ?>
ФункцияgetSelectedText()получаетвыделмышьюе.Инныйкст далееидетотправисьматефкстеcomponentйла .php
| 2.8. Лабораторнаяработа« | Переводсайтана«1С | -Битрикс»на | 
| технкомпозитногологиюсайта | » | 
 | 
| Цель работы | 
 | 
 | 
| Создатьпрограммный | код,котпорыйускоритьзволитвыдачувеб | - | 
| страницыпользователю | . | 
 | 
| Порядвыполненияк | лабораторнойработы | 
 | 
Присозданиикомпозитногосайта,такжедляотладкиработы, необходимоопредевфайлитьконстантуdbconn.php
define("BX_COMPOSITE_DEBUG", true);.Вэтомслучаевлогбудут писатьсявсеголосованияпротив"",такжесоздаватьсяистория изменстравкешени(/bitrix/htmlйц срасширениемpages/<domain>/)
.delete.<microtime>.
28
 
Нар ботающемсайтеиспользовэтконстайприведетниеты увеличению спользованиядисковогопространства.Поэтомуеёлучше отключитьпосленастройкиКомпозитногосайта.
| Основнойинструментработы | – этол,которыйггенерируетфункция | 
| AddMessage2LogМесторасплоложенияпределяетсяганастройками. | 
 | 
| dbconn.php: | 
 | 
define("LOG_FILENAME", $_SERVER[«DOCUMENT_ROOT"]."/../log.txt");
| Влогеможноувидетьсписокшаблонов,котг лосорые | вали | 
| «против»Рисунок( 9). | 
 | 
| Рисунок9 | – Фрагменталога | 
| Впримерелогавидно,чток менюпонент | «возражает» против | 
| использованияеготехнологииК | омпозитныйсайт. | 
| 
 | 29 | 
 
Открывшаблон,можчтоувидеть, рамкаходнойстраницыменю неимеетизменямыхчастей.Поэтомудобавляемшаблон разрешиспользованиена готехнологии.
Теперьрезультатрабкомпонентатыпопадаетвстатическую страницу,в htmlфайл.
Рисунок10 – ШаблонкомпонентаАвторизация
| Рассмотримнапримерешаблонако Авторизацияпонента | (Рисунок | |
| 10). | 
 | 
 | 
| Анализируяк,одтмечаемчасть,гдеменяетсясодержимое | 
 | |
| выводимойинформац.Мывидим,чтоеслпользовательиавторизован, | 
 | |
| тоунег | овыводитсяменю | - работчастьоднкода,еслине | 
авторизован, работаетдругаячастькода.Значитэтоесть динамическаячасть.
30
