Custom page creating/ru

From Documentation of ABK-Soft Products

Jump to: navigation, search

Contents

[edit] Пример создания своей сраницы

Для примера в папке !example/ создан просто php файл blank.php

Вы можете взять его и скопировать в корневую директорию скрипта под своим именем, например my_page.php

Для работы ему необходим файл шаблонизатора, который будет взят из папки с вашим текущим шаблоном, то есть если вы используете шаблон space то он будет искать файл в _themes/main/space/

Пример файла шаблонизатора так же находится в папке !example/, это файл blank.html. Вы можете взять его и скопировать в папку с вашего шаблона под своим именем, например my_page.html.

А в созданом вамифайле нужно задать имя файла шаблонизатора, для этого в строке

$page = new CPage("", $g['tmpl']['dir_tmpl_main'] . "blank.html");

Вы заменяеете blank.html на ваш файл шаблонизатора, напрмер my_page.html

$page = new CPage("", $g['tmpl']['dir_tmpl_main'] . "my_page.html");

[edit] Зоны доступа

Есть три вида страниц - только для зарегистрированых (нарпмер редактирование своего профайла), только для незарегистрированых (например регистраци) и страницы предназначиные для всех пользователей (например поиск)

Для того что бы сделать свою страницу доступно только для зарегистривоных пользователей, в самом начале вашего php файла нужно добавить строку:

$area = "login";

А если для только незаегистрированых, то:

$area = "public";

Если же ваша страница предназначена всем пользователям, то не нужно добавлять ничего.

[edit] Описание класса CPage

[edit] Method action()

Этот метод создан для обработки действий, то есть добавление изменения чего либо (профайла, отправки мыла). Смысл в разделении действий с бд от обработки шаблонов. Вот пример этого метода для обработки ответа на сообщение:

function action()
{
	global $g_user;
 	$cmd = get_param("cmd", "");
	if ($cmd == "reply") {
		DB::query("SELECT u.user_id AS user_from, u2.user_id AS user_to,
			m.id, m.subject, m.text
			FROM ((mail_msg AS m LEFT JOIN user AS u ON u.user_id=m.user_from)
			LEFT JOIN user AS u2 ON u2.user_id=m.user_to)
			WHERE m.id=" . to_sql(get_param("msg", ""), 'Number') . "");
		if ($row = DB::fetch_row()) {
			$this->id = $row['user_from'] != $g_user['user_id'] ? $row['user_from'] : $row['user_to'];
			$this->subject = "Re: " . $row['subject'];
			$this->text = "> " . str_replace("\n", "\n > ", $row['text']);
		}
	}
}

[edit] Method parseBlock(&$html)

Этот метод для парсинга шаблона. В нем используются следующие функции для упраления шаблоном.

  • $html->setvar("var", "value"); - заменить {var} в шаблоне на value
  • $html->parse("block", true); - парсит блок (то есть блок становится видимым и в нем распарсиваются все {var} определенные в коде ДО вызова этой функции (дальше {var} можно изменить и свова распарсить блок уже с другими {var}, можно испольлзовать в цикле).
  • $html->parse("subblock", false); - парсит блок, но при повторном вызове прошлый распарсеный блок заменяется предыдущим, а не парсится несколько раз как в том случае.


[edit] Шаблоны

Переменные в шаблоне выглядят как {variable}

Блоки в шаблоне выглядят так хмтл код

Есть в шаблонах переменные предопределенные

  • {url_main} - юрл сайта (без страницы)
  • {url_page} - со страницей
  • {url_main_tmpl} - юрл до папки с шаблонами, чтобы картинки или яваскрипты для шаблона закидывать в эту папку удобно было, а потом писать только {url_main_tmpl}js/lib.js

[edit] Языки

Фраза выносится в файл _lang/main/default/language.php В шаблоне она автоматом заменится на {l_ключ_массива_в_языковом_файле} Массив $l['all'] - для фраз которые на нескольких страницах Массивы вроде $l['index.php'] - будет распарсено только на index.php

[edit] Обработка класса

Класс запускается:

$page = new CPage("", $g['tmpl']['dir_tmpl_main'] . "blank.html");

где blank.html - имя файла шаблонизатора для этой страницы

Далее присоединяем к этому шаблонму хедер и футер

$header = new CHeader("header", $g['tmpl']['dir_tmpl_main'] . "_header.html");
$page->add($header);
$footer = new CFooter("footer", $g['tmpl']['dir_tmpl_main'] . "_footer.html");
$page->add($footer);

Это апускаются обработчики для файлов шаблонизатора _header.html и _footer.html, и уже на распарсеный их виду будут заменены {header} и {footer} в blank.html

Personal tools