Бесплатная CMS  - Limbo CMS (система управления сайтом)
Главная arrow Всё о LURM (ЛУРМ)

Навигация
Сайт
Каталог
Материалы сайта

RSS

Создание нового типа данных для LURM-Constructor Версия для печати
12.06.2006 9660 Опубликовал: Serebro
В LURM-Constructor есть понятие типа данных, которое объединяет в себе:
1) описание типа данных для хранения информации в БД
2) функционал работы поля LURM, состоящих из:
  • GetAdminField - отображение поля этого типа в админке в конструкторе
  • GetFrontField - отображение поля этого типа на сайта при внесении данных посетителем (а-ля "Добавить новость")
  • GetFrontValue - отображение содержимого (данных) этого поля на сайте в таблице (Кол-во посещений, Наименование)
  • ShowFrontHtml - отображение содержимое этого поля если оно расположено на отдельной странице (Ссылка, Текст статьи, Большая фотка)
  • ConvertForDB - предварительная обработка значения поля перед сохранением в БД (обработать поле даты, заменить пустое значение на ноль, убрать нецензурные слова)

Параметры передаются в эти функции через массив "$params", где:
[val] - значение поля
[row] - массив всей текущей строки таблицы данных (структура описана в конструкторе для данного раздела)
[eval] -
[l_alt] - значение свойства ALT тега
[l_class] - имя класса CSS
[l_text] - текст для замены значения поля
[section] - массив параметров текущего раздела
- [id] - ID-раздела
- [title] - системное имя (латиницей), оно же используется в адресной строке браузера
- [name] - название раздела
- [smplid] - ID-хранилища данных (lc_lurm_secN)
- [showtablehead] - Показывать шапку таблицы
- [class_sfx] - имя класса CSS для оформления таблицы данных
- [show_count] - кол-во строк данных в таблице на странице
- [show_cat] - показывать перечень категорий
- [show_filter] - показывать фильтр данных
- [item_published] - признак "Опубликовано" при сохранении данных в админке
- [show_cat_count] -
- [show_cat_descr] - показывать описание категории
- [show_cat_header] - показывать заголовок списка категорий "Категории:"
- [show_cat_cols] - кол-во колонок для вывода перечня категорий плиткой
- [show_cat_style] - отображение категорий list-списком, icons-плиткой
- [show_item_valign] - вертикальное выравнивание позиции данных, если вывод плиткой
- [show_item_style] - отображение данных list-списком, icons-плиткой
- [show_item_cols] - кол-во колонок для вывода данных плиткой
- [cat_columns] -
- [default_sort_field] - поле сортировки поумолчанию
- [default_sort_direct] - направление сортировки ASC-по возрастанию, DESC-по убыванию
- [link] - ссылка на раздел вида: /index.php/option/com_lurm/amp;sec/links
- [image] - имя файла значка раздела (topicgeneral.gif)
- [image_position] - позиция значка раздела left-слева, right-справа
- [description] - описание раздела (можно HTML)
- [published] - раздел опубликован
- [ordering] - порядок сортировки списка разделов
- [access] - доступ
- [show_path] -

полный список параметров пожно посмотреть в отладчике или воспользоваться функцией print_r($params);

Для Limbo:
Файл с описанием типа (или нескольких типов) должно лежать в папке "admin/components/com_lurm/types/" и должно иметь имя вида "o_xxxxx.inc", где xxxxx - произвольное наименование вашего типа

Для Mambo/Joomla:
Файл с описанием типа (или нескольких типов) должно лежать в папке "administrator/components/com_lurm/types/" и должно иметь имя вида "type_xxxxx.php", где xxxxx - произвольное наименование вашего типа


Создание нового типа данных на примере типа "Hits" ("Количество посещений")

<?php
// Это, чтобы не вызвали функцию из вне
defined( '_VALID_MOS' ) or die( 'Direct Access to this location is not allowed.' );

// Объявление новго типа, является расширением существующего абстрактоного класса lurmElements,
// который объединяет все классы типов
class lurmHits extends lurmElements {

// Инициализация класса нашего типа
function lurmHits() {

// проверяем наличие константы отображения названия типа, если нет то заводим
if (!defined('_LURM_TYPES_HITS')) define('_LURM_TYPES_HITS','Hits');

// Даем типу системное (уникальное) имя, по нему производится сортировка отображаемого
// списка полей для выбора в админке
$this->sec = 'hits';

// Задаем визуальное имя типа
$this->title = _LURM_TYPES_HITS;

// Имя типа (чаще всего равно системному имени)
$this->type_lurm = 'hits';

// Далее идет перечень параметров поля для хранения в БД
// Тип хранения данных в БД
$this->type_sys = 'int';

// Размерность поля данных БД
$this->max_length = '10';

// Параметр "NOT NULL" поля БД
$this->not_null = '1';

// Параметр "DEFAULT" поля БД
$this->default_value = '0';
}

// Отображение поля этого типа в админке
function GetAdminField($params) {

// используется функция ADD класса admin_interface
// function add( $tag, $name='', $desc='', $value='', $style='', $php='')
// $tag - форма отображения
// $name - переменная имени поля (для передачи параметров)
// $desc - текст названия поля
// $value - значение поля
// $style - CSS стиль
// $php - произвольный php-код
return "$"."gui->add('form_textfield','item_".$params['rsar']['title']."','".$params['rsar']['name']."','".$params['val']."');";

}

// Отображение поля этого типа на сайта при внесении данных посетителем
function GetFrontField($params) {
$s = '<tr><td>'.$params['rsar']['name'].': </td><td><INPUT TYPE="text" VALUE="'.$params['val'].'" NAME="item_'.$params['rsar']['title'].'"></td></tr>';
return "echo '".$s."';";
}

// Отображение содержимого (данных) этого поля на сайте в таблице
function GetFrontValue($params) {
if ($params['val']!='') return sprintf(_LURM_HITS_VAL,$params['val']); else return '';
}

// Отображение содержимое этого поля если оно расположено на отдельной странице
function ShowFrontHtml($params) {
return false;
}

// Предварительная обработка значения поля перед сохранением в БД
// Эта функция будет работать если в GetAdminField есть строка:
// $s .= "$"."gui->add('form_hidden','itemtype_".$params['rsar']['title']."','','".$params['type_usr']."');";
// Для примера можно посмотреть имеющийся тип "DateField"
function ConvertForDB($params) {
return false;
}

}

// Создаем новый класс нашего типа
// Переменная $element является массивом всех классов типов
// индексом массива является системное имя типа и равно $this->sec
$element['hits']=new lurmHits;

?>

Близкие по теме статьи
- -

English
Switch to English...
BabelFish.AltaVista.com auto-translate
Скачать Limbo
Ваше мнение?
Что вам мешает использовать Limbo в своих проекта
Безопасность
Недостаток компонентов/модулей
Слабая техподдержка
Плохой форум
Плохие отзывы о Limbo
Недостаток документации


Результаты