Разработка шаблонов

Шаблоны CimWebCenter используются для управления отображением информационных страниц сайта. При создании новых или редактировании существующих страниц пользователь имеет возможность выбрать один из доступных ему шаблонов. Однако, прежде эти шаблоны необходимо разработать.

Шаблон может состоять из макросов включения в себя других шаблонов, HTML и PHP кодов.

Макросы

Макросы удобно использовать для создания часто повторяющихся блоков страницы, например, блока кнопок рейтингов или мета тегов. Макросы представляют собой обычные шаблоны и могут содержать PHP код, но не могут содержать других макросов.

Синтаксис подключения макросов выглядит следующим образом:

[%my_macros_box%] , где

my_macros_box– это название шаблона, а символы [% и %] - открывающие и закрывающие знаки.

 

Включение PHP кода

По умолчанию система считает все шаблоны HTML кодом. Поэтому для включения в них PHP кода используется стандартный синтаксис:

<?phpInfo()?>

Подключение пользовательских библиотек из API

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

<?require_once("./userlib/lib.inc")?> , где

lib.inc – это имя файла подключаемой библиотеки.

 

Подключение CSS и Javascript файлов

Разработчик шаблона должен самостоятельно позаботится о том, чтобы отображаемая страница могла использовать CSS или Javascript файлы, для этого применяется стандартный HTML синтаксис:

<LINK REL="STYLESHEET" TYPE="text/css" HREF="/css/cim.css">

<SCRIPT SRC="/js/cim.js"></SCRIPT>

где cim.css и cim.js – подключаемые CSS и Javascript файлы.

 

Системные переменные

При разработке шаблонов широко используются глобальные переменные:

$id

ID страницы

$pname

название страницы

$pcontent

содержание страницы

$pkeywords

META name="keywords"

$pdescription

META name="description"

$purl

Метка страницы

$ptitle

Title

$ppub

Флаг публикации

$ppubDate

Дата публикации

$pcreateDate

Дата создания

$pupdateDate

Дата последнего изменения страницы

$ptmpl

Шаблон

$pcss

Файл стилей -css

Например, для формирования заголовка страницы можно воспользоваться следующим синтаксисом:

<TITLE><?=$ptitle?></TITLE>

Системные функции

Эти функции всегда доступны. Для использования этих функций не требуется подключения дополнительных библиотек и модулей, поскольку они являются частью ядра CimWebCenter.

get_fields_length

Эта функция определяет длину полей в базе и возвращает их в именованном массиве (хеше).

Описание:

array get_fields_length($dbname, $tbname)

возвращает array('field1_name' => $field1_length, 'field2_name' => $field2_length, … ), $dbname - имя базы,$tbname - имя таблицы.

query_die

Эта функция завершения работы скрипта и вывод информации об ошибке SQL запроса.

Описание:

void query_die()

is_folder

Эта функция определяет является ли объект папкой.

Описание:

boolis_folder($id [, $table])

возвращает TRUE если да и FALSE если нет, $tbname - не обязательный параметр, имя таблицы, по умолчанию "relation".

get_name

Эта функция нахождения имени объекта по его ID.

Описание:

string get_name($id [, $tbname ])

Возвращает имя объекта, $id - ID объекта, $tbname - не обязательный параметр, имя таблицы, по умолчанию "object".

split_on_page

Эта функция выполняет постраничный вывод длинного списка.

Описание:

array function split_on_page($pstr, $num_rows, $pos [, $tmpl_label, $cfgMaxRows, $cfgMaxPages] )

Где $num_rows - общее кол-во элементов, которое нужно разбить на страницы, $pos - позиция, с которой начинается вывод, $tmpl_label - шаблон (по умолчанию - 'SPLIT_ON_PAGE'), $cfgMaxRows - кол-во строк на странице (по умолчанию 30),

$cfgMaxPages - кол-во ссылок на страницы (это когда появляется ссылка "Далее") по умолчанию 10. (по-умолчанию означает, что эти параметры можно не писать в функции вообще), $pstr - строка, которая будет выводиться в ссылке перед номером $pos (это нужно, если кроме номера позиции нужно передавать еще какие-нибудь параметры, например нужно передать $a=2, $b=4. Название переменной $pos пусть будет "pageNumber"), пишем split_on_page('a=2&b=4&pageNumber=', …), получаем ссылки:

для первой страницы <ahref="a=2&b=4&pageNumber=0">…

для второй страницы <ahref="a=2&b=4&pageNumber=30">…

Возвращает массив array($LIMIT, $tmpl), первый елемент которого строка для подстановки в SQL запрос для ограничения вывода строк:

$LIMIT = " LIMIT 30, 20";

второй элемент – шаблон панели постраничного вывода( <<Prev 1/ 2/ 3/ 4/ Next>> )

object_properties

Эта функция возвращает свойства объекта в виде именованного массива.

Описание:

array object_properties($objectID)

$objectID - ID объекта, возвращает массив:

array(

'url' => URL объекта,

'title' =>TITLE объекта,

'name' => название объекта,

'content' => контент,

'keywords' => KEYWORDS,

'description' => DESCRIPTION,

'pub' => публикуемый ли объект (значения'Y' или 'N'),

'createDate' => дата создания в формате TIMESTAMP,

'updateDate' => дата последнего изменения в формате TIMESTAMP

'pubDate' =>- дата публикации в формате TIMESTAMP

'css' => файл css объекта,

'tmpl' => текст шаблона этого объекта,

)

object_childsProperties

Эта функция возвращает многомерный массив свойств объектов, которые являются дочерними к заданному.

Описание:

array object_childsProperties($parentID [, $order = 'number', $pub = ['Y', 'N', FALSE]] )

$parentID - ID родительского объекта

$order - не обязательный параметр - порядок сортировки, по умолчанию "number"

$pub - не обязательный параметр - выборка элементов, отмеченных как "публикуемые", по умолчанию 'Y',если FALSE, то поле pub вообще не учитывается (выбираются и публикуемые и не публикуемые элементы).

Возвращает массив:

array(

нулевой элемент => array(

'id' => ID объекта,

'url' => URL объекта,

'title' => TITLE объекта,

'name' => название объекта,

'content' => контент,

'keywords' => KEYWORDS,

'description' => DESCRIPTION,

'pub' => публикуемый ли объект (значения 'Y' или 'N'),

'createDate' => элемент - дата создания в формате TIMESTAMP,

'updateDate' => дата последнего изменения в формате TIMESTAMP

'pubDate' =>дата публикации в формате TIMESTAMP

 

первый элемент => array(

'id' => ID объекта,

'url' => URL объекта,

'title' => TITLE объекта,

'name' => название объекта,

'content' => контент,

'keywords' => KEYWORDS,

'description' => DESCRIPTION,

'pub' => публикуемый ли объект (значения 'Y' или 'N'),

'createDate' => дата создания в формате TIMESTAMP,

'updateDate' => дата последнего изменения в формате TIMESTAMP

'pubDate' =>дата публикации в формате TIMESTAMP

)

object_parentsProperties

Эта функция возвращает многомерный массив свойств объектов, которые являются родительскими к заданному.

Описание:

array object_parentsProperties($childID [, $order = 'number', $pub = ['Y', 'N', FALSE]] )

$childID - ID дочернего объекта

$order - не обязательный параметр - порядок сортировки, по умолчанию "number"

$pub - не обязательный параметр - выборка элементов, отмеченных как "публикуемые", по умолчанию 'Y', если FALSE, то поле pub вообще не учитывается (выбираются и публикуемые и не публикуемые элементы)

Возвращает массив:

array(

нулевой элемент => array(

'id' => ID объекта,

'url' => URL объекта,

'title' => TITLE объекта,

'name' => название объекта,

'content' => контент,

'keywords' => KEYWORDS,

'description' => DESCRIPTION,

'pub' => публикуемый ли объект (значения 'Y' или 'N'),

'createDate' => элемент - дата создания в формате TIMESTAMP,

'updateDate' => дата последнего изменения в формате TIMESTAMP

'pubDate' =>дата публикации в формате TIMESTAMP

 

первый элемент => array(

'id' => ID объекта,

'url' => URL объекта,

'title' => TITLE объекта,

'name' => название объекта,

'content' => контент,

'keywords' => KEYWORDS,

'description' => DESCRIPTION,

'pub' => публикуемый ли объект (значения 'Y' или 'N'),

'createDate' => дата создания в формате TIMESTAMP,

'updateDate' => дата последнего изменения в формате TIMESTAMP

'pubDate' =>дата публикации в формате TIMESTAMP

)

get_file($filename)

Эта функция принимает параметром имя файла на диске и возвращает содержимое этого файла как строку.

Описание:

string get_file($filename)

get_index_page_ID

Возвращает ID главной страницы сайта.

Описание:

int get_index_page_ID()