Вставка №1
Иногда на странице надо вывести дополнительную информацию или сервис,
форму заказа, опрос, да мало ли что может понадобиться.
Вот это мы и попытаемся вывести к примеру фразу
Код на странице
Включатся и выключатся, она будет чекбоксом в панели администратора.
Соответственно нам надо будет сформировать чекбокс, записать его состояние и в зависимости от состояния выводить или не выводить информацию на странице.
1. Надо придумать название нашему чекбоксу, пусть будет - Выводить код
Для этого в языковом файле lang/ru.php после надписи // plugins создадим переменную
$lang['Codeto_page'] = " Выводить код ";
2.Если проанализировать код CMS то можно выяснить что функция построения чекбокса и передачи из него данных throwYesNoBox есть в файле libraries / Trash.php
Соответственно в файле actions_admin/p.php создадим переменную $sCodeToPage которая используя функцию throwYesNoBox будет выводить наш чекбокс, отображать и передавать его состояние (0 если не активен или 1) в другую переменную iCodetoPage для сохранения.
$sCodeToPage = throwYesNoBox( 'iCodetoPage', $aData['iCodetoPage'] );
И поместим перед строкой
$sPhotoTypesSelect = throwSelectFromArray( $aPhotoTypes, 1 );
3. За отображение форм настроек страницы в админке отвечает файл templates/ admin/ pages.tpl (таблица <table class="tab" id="tabOptions"> ), вот туда мы и вставим функцию $sCodeToPage с названием $lang[Codeto_page]
<tr>
<td>$lang[Codeto_page]</td>
<td>
$sCodeToPage
</td>
</tr>
Вставляем перед <!-- tab options -->
4. Чекбокс наш уже отображается но данные из него никуда не передаются, что делать?
В файле db/ru_pages_ext.def.php описан массив переменных которые будут хранится в файле db/ru_pages_ext.php , вот туда мы и добавим наши данные о состоянии чекбокса – переменную iCodetoPage
$aFieldsNames = Array( 'iPage' => 0, 'sDescriptionFull' => 1, 'sMetaDescription' => 2, 'sMetaKeywords' => 3, 'sTemplate' => 4, 'sTheme' => 5, 'sUrl' => 6, 'sBanner' => 7, ' iCodetoPage ' => 8, );
function ru_pages_ext( $aExp ){
return Array( 'iPage' => $aExp[0], 'sDescriptionFull' => $aExp[1], 'sMetaDescription' => $aExp[2], 'sMetaKeywords' => $aExp[3], 'sTemplate' => $aExp[4], 'sTheme' => $aExp[5], 'sUrl' => $aExp[6], 'sBanner' => $aExp[7], ' iCodetoPage ' => $aExp[8] );
}
5. Теперь нам предстоит сделать вывод нашей фразы в зависимости от записанного состояния чекбокса.
Для этого в файле actions_client/p.php сделаем проверку данных записанных в переменную iCodetoPage и если оно равно 1 то выводим переменную $sCodetoPage которая будет отображать нашу фразу из файла темплейта templates/pages_default.tpl
if( !empty( $aData[' iCodetoPage '] ) && $aData[' iCodetoPage '] == 1 ){
$sCodetoPage = $oTpl->tbHtml( $aData['sTemplate'], 'CODETO_PAGE' );
}
6. Теперь в файл templates/pages_default.tpl , который отвечает за отображение страницы добавим нашу переменную $sCodetoPage после переменной $sSubpagesList .
И после <!-- END BANNER --> добавим долгожданный кусок темплейта
<!-- BEGIN CODETO_PAGE -->
<div id="codetopage"> Код на странице</div>
<!-- END CODETO_PAGE -->
Вот и всё можно проверить нашу работу.
Соответственно исходя из общего принципа так можно добавить почтовую форму, комментарии, опросы и многое другое.
kodeto.txt, Страница с кодом в текстовом формате