
Разработка интернет-приложений.-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