Откуда в берутся типа контента?
Откуда в берутся типа контента?
После того как, я установил модуль Cataloger в разделе контент появились новые типы контента. Страница каталога, Страница элемента. Если в БД посмотреть, то в таблице content у этих записей есть в поле type, записано catalogcategory, catalogitem соответственно. Откуда он берет эти типы?
-
- Forum Members
- Posts: 76
- Joined: Sat Dec 06, 2008 3:05 pm
Re: Откуда в берутся типа контента?
посмотри внимательней: там еще поле content_props есть
Re: Откуда в берутся типа контента?
Code: Select all
CREATE TABLE `prefix_content` (
`content_id` int(11) NOT NULL, /* по этому полю происходит связь этой таблицы с таблицей prefix_content_props*/
`type` varchar(25) default NULL, /* вот откуда он берет запись в это поле*/
...
`prop_names` text, /* в этом поле перечисление полей в таблице prefix_content_props*/
...
PRIMARY KEY (`content_id`),
);
Code: Select all
CREATE TABLE `prefix_content_props` (
`content_id` int(11) default NULL, /* по этому полю происходит связь этой таблице с таблицей prefix_content */
`type` varchar(25) default NULL,
`prop_name` varchar(255) default NULL,
`param1` varchar(255) default NULL,
`param2` varchar(255) default NULL,
`param3` varchar(255) default NULL,
`content` text,
`create_date` datetime default NULL,
`modified_date` datetime default NULL,
KEY `index_content_props_by_content_id` (`content_id`)
);
Code: Select all
INSERT INTO `cms_content`(content_id, type, ..., prop_names, ...) VALUES (327, 'catalogitem', ..., 'target,image,thumbnail,extra1,extra2,extra3,Item Notes,Weight,Medium/Media,Dimensions,Price,In Stock?,sub_template' ...);
Code: Select all
INSERT INTO `cms_content_props` VALUES (327, 'string', 'target', '', '', '', '', NULL, '2010-11-25 11:18:50');
INSERT INTO `cms_content_props` VALUES (327, 'string', 'image', '', '', '', '-1', NULL, '2010-11-25 11:18:50');
INSERT INTO `cms_content_props` VALUES (327, 'string', 'thumbnail', '', '', '', '-1', NULL, '2010-11-25 11:18:50');
INSERT INTO `cms_content_props` VALUES (327, 'string', 'extra1', '', '', '', '', NULL, '2010-11-25 11:18:50');
INSERT INTO `cms_content_props` VALUES (327, 'string', 'extra2', '', '', '', '', NULL, '2010-11-25 11:18:50');
INSERT INTO `cms_content_props` VALUES (327, 'string', 'extra3', '', '', '', '', NULL, '2010-11-25 11:18:50');
INSERT INTO `cms_content_props` VALUES (327, 'string', 'Item Notes', '', '', '', 'tesst', NULL, '2010-11-25 11:18:50');
INSERT INTO `cms_content_props` VALUES (327, 'string', 'Weight', '', '', '', '', NULL, '2010-11-25 11:18:50');
INSERT INTO `cms_content_props` VALUES (327, 'string', 'Medium/Media', '', '', '', '', NULL, '2010-11-25 11:18:50');
INSERT INTO `cms_content_props` VALUES (327, 'string', 'Dimensions', '', '', '', '', NULL, '2010-11-25 11:18:50');
INSERT INTO `cms_content_props` VALUES (327, 'string', 'Price', '', '', '', '111', NULL, '2010-11-25 11:18:50');
INSERT INTO `cms_content_props` VALUES (327, 'string', 'In Stock?', '', '', '', '', NULL, '2010-11-25 11:18:50');
INSERT INTO `cms_content_props` VALUES (327, 'string', 'sub_template', '', '', '', '6', NULL, '2010-11-25 11:18:50');
Можно предположить, что это определяется где-то в коде php, но тогда получается, что типы контента строго прописаны в где-то в коде. Тогда может кто-нибудь подскажет алгоритм работы добавления новых типов контента?
Re: Откуда в берутся типа контента?
Посмотрел файл установки модуля method.install.php.
При установки модуля выполняется только он?
P.S. Пока покаюсь дальше...
P.S. Пытался разместить код с подсветкой т.е. вот так [сode][/сode], но тогда комментарии которые на русском конвертируются в другую кодировку
При установки модуля выполняется только он?
Code: Select all
if(!isset($gCms)) exit;
$db = &$gCms->GetDb();
$dict = NewDataDictionary($db);
/* Ниже следуют команды по созданию таблиц и наполнению их начальными данными */
$flds = ' id I KEY, type_id I, title C(255), template X ';
$taboptarray = array('mysql' => 'TYPE=MyISAM');
$sqlarray = $dict->CreateTableSQL(cms_db_prefix() . 'module_catalog_template', $flds, $taboptarray);
$dict->ExecuteSQLArray($sqlarray);
$db->CreateSequence(cms_db_prefix() . 'module_catalog_template_seq'); // Таблица для записи порядка следования module_catalog_template
$flds = ' type_id I KEY, name C(25) ';
$sqlarray = $dict->CreateTableSQL(cms_db_prefix() . 'module_catalog_template_type', $flds, $taboptarray);
$dict->ExecuteSQLArray($sqlarray);
$query = 'INSERT INTO ' . cms_db_prefix() . 'module_catalog_template_type VALUES (?,?)';
$dbresult = $db->Execute($query,array(CTEMPLATE_ITEM, $this->Lang('item_page')));
$dbresult = $db->Execute($query,array(CTEMPLATE_CATEGORY, $this->Lang('category_page')));
$dbresult = $db->Execute($query,array(CTEMPLATE_CATALOG, $this->Lang('catalog_printable')));
$dbresult = $db->Execute($query,array(CTEMPLATE_COMPARISON, $this->Lang('item_comparison')));
$dbresult = $db->Execute($query,array(CTEMPLATE_FEATURE, $this->Lang('catalog_short_list')));
$flds = ' id I KEY, type_id I, is_textarea I, attribute C(255), order_by I, alias C(60), length I, defaultval X ';
$sqlarray = $dict->CreateTableSQL(cms_db_prefix() . 'module_catalog_attr', $flds, $taboptarray);
$dict->ExecuteSQLArray($sqlarray);
$db->CreateSequence(cms_db_prefix() . 'module_catalog_attr_seq');
$query = 'INSERT INTO ' . cms_db_prefix() . 'module_catalog_attr (id,type_id,is_textarea,attribute) VALUES (?,?,?,?)';
$new_id = $db->GenID(cms_db_prefix() . 'module_catalog_attr_seq');
$dbresult = $db->Execute($query,array($new_id, 1, 1, 'Item Notes'));
$new_id = $db->GenID(cms_db_prefix().'module_catalog_attr_seq');
$dbresult = $db->Execute($query,array($new_id, 2, 1, 'Category Notes'));
$new_id = $db->GenID(cms_db_prefix().'module_catalog_attr_seq');
$dbresult = $db->Execute($query,array($new_id, 3, 1, 'Catalog Notes'));
$new_id = $db->GenID(cms_db_prefix().'module_catalog_attr_seq');
$dbresult = $db->Execute($query,array($new_id, 1, 0, 'Weight'));
$new_id = $db->GenID(cms_db_prefix().'module_catalog_attr_seq');
$dbresult = $db->Execute($query,array($new_id, 1, 0, 'Medium/Media'));
$new_id = $db->GenID(cms_db_prefix().'module_catalog_attr_seq');
$dbresult = $db->Execute($query,array($new_id, 1, 0, 'Dimensions'));
$new_id = $db->GenID(cms_db_prefix().'module_catalog_attr_seq');
$dbresult = $db->Execute($query,array($new_id, 1, 0, 'Price'));
$new_id = $db->GenID(cms_db_prefix().'module_catalog_attr_seq');
$dbresult = $db->Execute($query,array($new_id, 1, 0, 'In Stock?'));
$new_id = $db->GenID(cms_db_prefix().'module_catalog_attr_seq');
$dbresult = $db->Execute($query,array($new_id, 3, 0, 'Copyright'));
/* Ниже создаются папки под файлы */
$catalogdirs = array('/images/catalog','/images/catalog_src','/catalogerfiles');
foreach($catalogdirs as $thisDir) {
$fileDir = dirname($gCms->config['uploads_path'] . $thisDir . '/index.html');
if(!is_dir($fileDir)) {
mkdir($fileDir);
}
touch($fileDir.'/index.html');
}
/**/
$this->importSampleTemplates();
$this->AddEventHandler('Core', 'ContentEditPost', false);
$this->SetPreference('item_image_count', 2); // Тут кстати указывается кол-во изображении
$this->CreatePermission('Modify Catalog Settings', 'Modify Catalog Settings');
// put mention into the admin log
$this->Audit(0, $this->Lang('friendlyname'), $this->Lang('installed',$this->GetVersion()));
P.S. Пытался разместить код с подсветкой т.е. вот так [сode][/сode], но тогда комментарии которые на русском конвертируются в другую кодировку
Re: Откуда в берутся типа контента?
Вот здесь начинайте копать http://www.cmsmadesimple.org/apidoc/CMS ... ntentTypes
Ничего в базе нет, создавайте свой класс "that extends ContentBase" и он будет добавляться в список.
Ничего в базе нет, создавайте свой класс "that extends ContentBase" и он будет добавляться в список.
Re: Откуда в берутся типа контента?
Sonya
Спасибо, завтра начну копать.
Включил debug, там выдает что 60 SQL запросов, разве это нормально?
Спасибо, завтра начну копать.
Включил debug, там выдает что 60 SQL запросов, разве это нормально?
Re: Откуда в берутся типа контента?
Для Cataloger, к сожалению, да. Он забирает каждый элемент каталога и каждое дополнительное поле элемента отдельным запросом, насколько я помню.i3bepb wrote: Включил debug, там выдает что 60 SQL запросов, разве это нормально?