програмно создать тип содержания...

Главные вкладки

Аватар пользователя oblivion oblivion 12 апреля 2007 в 17:55

Ув. друпалеры, подскажите как можно создать тип содержания(content type), словарь с терминами(vocabulary), и привязать словарь к этому типу содержания, и вся фишка в том что бы сделать это все не через интерфейс а через код, было бы лучше если спримером.

Комментарии

Аватар пользователя vadbars@drupal.org vadbars@drupal.org 12 апреля 2007 в 18:16

Берете чистую установку Drupal, сохраняете дамп БД. Затем создаете там все, что нужно. Делаете еще один дамп. Сравниваете исходную и полученную базу - получаете набор SQL-команд, которые формируют желаемый вами результат. Делаете скрипт, который выполняет этот набор команд. Вуаля!


Поиск по русским сайтам о Drupal Полный русский перевод Drupal 5.x и модулей: раз и два.

Аватар пользователя oblivion oblivion 12 апреля 2007 в 18:30

то есть от меня требуется лиш првильно написать sql команду, и потом ее выполнять, и это все? я не верю что все так просто Smile

Аватар пользователя oblivion oblivion 12 апреля 2007 в 19:00

я еще не пробовал но сейчас хочу спросить про привязку словаря к типу содержания, все также в запросе это прописывается и дальше без проблем идет?
И еще вопрос, если я сначала создаю новый тип содержания, естественно с ССК, привязываю его к словарю, делаю вышеописаные вами действия, получаю sql код и пробую ставить на друпал у которого нет ССК, будут ли проблемы?

Аватар пользователя Dan Dan 12 апреля 2007 в 20:36

Нет, так делать нельзя. Надо смотреть FormAPI - в пятой версии теперь можно заполнять и посылать формы программно. См. ф-ю drupal_execute на api.drupal.org.

> И еще вопрос, если я сначала создаю новый тип содержания, естественно с ССК....
Скользкий вопрос. Скажем так: скорее всего ничего не будет. Проще попробовать. Но, думаю это может представлять только теоритический интерес.

Аватар пользователя oblivion oblivion 13 апреля 2007 в 18:19

попробывал я сделать так как писал vadbars, начал сравнивать два дампа... мда не так то все просто как казалось, как прикинул какой там запросик, а точнее несколько, получится и то это только к одному типу (а мне вообще то надо етак штук ~15), что то желание пропало ковырять, может я что то не правильно делал, хотя врядле, но отличий я нашел прилично....
а вот с drupal_execute интересно...

насамом деле мне нужно програмно кинуть в бд именно тип содержания созданый ССК, и притом еще и с кучей поле, значения которых потом прийдется чекать по параметрам... но это другая история, я хочу оприделится как по Вашему мнению стоит ли вообще тратить силы и время на эту задачу?

Аватар пользователя Dan Dan 14 апреля 2007 в 21:40

> я хочу определится как по Вашему мнению стоит ли вообще тратить силы и время на эту задачу?

Для такого рода работ надо хорошо знать Drupal и CCK.
ИМХО - нет.

Аватар пользователя dimazub dimazub 27 июня 2007 в 6:06

Создание словаря с привязкой к типу custom_node:
<?php
$vocabulary = array(
'name' => t('Vocabulary Name'),
'multiple' => '0',
'required' => '0',
'hierarchy' => '1',
'relations' => '0',
'module' => 'taxonomy', // можно указать свой модуль
'nodes' => array(
'custom_node' => 1
)
);
taxonomy_save_vocabulary($vocabulary);
?>

Создание терма привязанного к конкретному словарю:
<?php
$term['vid'] = vocabulary_id;
$term['name'] = 'Term Name';
$term['description'] = 'Term Description';
taxonomy_save_term($term);
?>

Создание содержания типа custom_type с 2мя термами:
<?php
$node->created = time();
$node->uid = 1;
$node->type = 'custom_type';
$node->status = 1;
$node->comment = 2;
$node->promote = 0;
$node->moderate = 0;
$node->sticky = 0;
$node->custom_data1 = $value1;
$node->taxonomy[] = $tid1;
$node->taxonomy[] = $tid2;
node_save($node);
?>

Значения в примере можно менять..