Организация категорий :: Варианты хранения категорий в CMS системе

По умолчанию все категории хранятся в SQL таблице wbg_tree_categories
Структура данной таблицы на данный момент следующая:



id - Уникальный номер категории, автоинкрементится.
parent_id - содержит id родительской категории. 0 для корневой категории
sort_id - порядковый номер. Влияет на сортировку категорий в рамках родительской категории
level - Уровень вложенности. 0 для корневой категории
title - Название категории
language - номер языка. Начинается с 1 . 0 только для мультиязычных категорий
type - 0-1-2.  0 - физическая категория , 1 - виртуальная. 2 - линк
dir - Директория если type=0 , пустота если type=1 или линк  (http://www.something.com) если type=2
active - видима ли категория <CROSSLINK>
enabled - включена ли категория <CROSSLINK>
properties - сериалайзнутый массив со свойствами категории  <CROSSLINK>
property_template - номер шаблона свойств (таблица wbg_tree_templates)
property_template2 - номер дополнительного шаблона свойств
output_template - номер шаблона вывода
input_module - номер модуля ввода данных
output_module - номер модуля вывода данных
access_level - не используется
permanent - true или false. Если true , то все операции с категориями запрещены (но не с содержанием и свойствами категории).
other - не используется

Дополнительные возможности

Разрабатывая разные системы на базе web-gooroo мы столкнулись с тем что иногда не слишком удобно хранить категории в базе данных.
Особенно это актуально когда нужно создать реально перманентные категории. На которые никак не может повлиять ни пользователь ни backup и restore базы данных.
Поэтому с ядра 97 был добавлен механизм позволяющий держать категории в файле.

Файл должен называться custom_categories.php и находиться в /config/ директории
Содержание его следующее:

<?php

$manual_category = array();

//--------------------------------------------------------------------------------------
$manual_category[2] = array();
$test = &$manual_category[2];
//--------------------------------------------------------------------------------------
$test['id'] = 2;
$test['parent_id'] = 0;
$test['sort_id'] = 1;
$test['level'] = 0;
$test['title'] = "Custom category";
$test['language'] = 0;
$test['type'] = 0;
$test['dir'] = "/rus_doc/";
$test['active'] = 1;
$test['enabled'] = 1;
$test['properties'] = '';
$test['property_template'] = 5;
$test['property_template2'] = 0;
$test['input_module'] = 7;
$test['output_module'] = 7;
$test['input_template'] = 0;
$test['output_template'] = 0;
$test['access_level'] = 0;
$test['permanent'] = 1;
$test['other'] = '';
$test['seo'] = '';
?>


где $manual_category[$INDEX]
$INDEX = id категории

Важно!

a) Данный механизм на данный момент работает только для отображения и работы внутри CMS. Прямой заход на категорию такого типа не предусмотрен. Т.е вы не попадете на content этой категории через URL /rus_doc/ или через прямой GET аргумент ?wbg_cat=2
b) Все механизмы типа изменения настроек, свойств, прав доступа для данных категорий не работают поэтому отключены.
с) Очень рекомендуем таким способом создавать совершенно отдельную ветку категорий, так как если встраивать такую категорию в реальное дерево то ничего хорошего не получится (хотя мы не тестировали)
d) Обратите внимание на номера этих категорий и состояние индекса AUTO_INCREMENT в таблице wbg_tree_categories чтобы номера в файле и SQL таблице не пересеклись. В идеале AUTO_INCREMENT должен быть больше чем максимальный номер категории в файле



Пользователь

Пароль

Поиск по сайту



бесплатная CMS