Limbo cms

Cкачать Limbo CMS

Обновлено 19.01.2012
  • v 1.0.4 RE4 Stable
  • Интернет-маркетинг

    Каталог бесплатных CMS

    Каталог платных CMS

    Главная - Статьи - Создание нового типа данных для LURM-Constructor

    Создание нового типа данных для LURM-Constructor

    В 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] - ссылка на раздел вида: http://limbo-cms.net.ru/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;

    ?>
    Copyright © 20.01.2005-20.11.2017 русская поддержка Limbo CMS.