Drupal api
지각생 연습장
CMS / Drupal / CMS_Migration
목차 |
node
node 추가, 관리 관련
- node_save(&$node) : $node->title 등을 설정해 준 후, 이 함수를 실행. $node->nid 가 empty면, 새 node라 보고, 추가하게 된다.
forum
- forum_insert($node) : 포럼에 추가할 때는 이것만 해주면 되겠다. $node에 대해서도 딱히 해주는게 전혀 없다.
- 기타 유용할 것 같은 : forum_get_forums, forum_get_topics, forum_taxonomy ..
- forum을 만드는 것은, 그냥 term_data 를 하나 추가해 주는 것이다. (taxonomy_save_term) forum 테이블에는 각 노드와 term 의 아이디가 연결된다.
- term_hierarchy 테이블에 tid, parent 쌍에 forum, forum_container 의 tid 를 넣어준다.
- term_node 테이블에는 nid, tid 쌍에 node id, forum 의 tid 를 넣어준다. 이건, forum topic 으로 넣을때와, 그 토픽에 카테고리 지정할때 하면 되겠다.
- forum container 도 하나의 포럼이다. 포럼으로 생성한다음 variable_get, _set 함수를 이용해 forum_containers 의 value에 그 아이디를 추가해주면 된다.
files
첨부파일 처리. 얼핏 못 찾겠다.
- 그냥 files, file_revisions 테이블에 바로 써도 될 듯. files는 nid, file_revisions는 vid 로 접근하면 된다
category
카테고리/taxonomy(hierarchy)/tag 등
taxonomy_save_vocabulary
아래 부분만 활용하면 될듯
$edit['vid'] = db_next_id('{vocabulary}_vid'); db_query("INSERT INTO {vocabulary} (vid, name, description, help, multiple, required, hierarchy, relations, tags, weight, module) VALUES (%d, '%s', '%s', '%s', %d, %d, %d, %d, %d, %d, '%s')", $edit['vid'], $edit['name'], $edit['description'], $edit['help'], $edit['multiple'], $edit['required'], $edit['hierarchy'], $edit['relations'], $edit['tags'], $edit['weight'], isset($edit['module']) ? $edit['module'] : 'taxonomy'); foreach ($edit['nodes'] as $type => $selected) { db_query("INSERT INTO {vocabulary_node_types} (vid, type) VALUES (%d, '%s')", $edit['vid'], $type); } module_invoke_all('taxonomy', 'insert', 'vocabulary', $edit); $status = SAVED_NEW; //이 줄은 불필요할지도. cache_clear_all();
comment
comment_save($edit)
$edit['cid'] = db_next_id('{comments}_cid'); $edit['timestamp'] = time(); if ($edit['uid'] === $user->uid) { // '===' because we want to modify anonymous users too $edit['name'] = $user->name; } $edit += array('mail' => '', 'homepage' => ''); db_query("INSERT INTO {comments} (cid, nid, pid, uid, subject, comment, format, hostname, timestamp, status, score, users, thread, name, mail, homepage) VALUES (%d, %d, %d, %d, '%s', '%s', %d, '%s', %d, %d, %d, '%s', '%s', '%s', '%s', '%s')", $edit['cid'], $edit['nid'], $edit['pid'], $edit['uid'], $edit['subject'], $edit['comment'], $edit['format'], $_SERVER['REMOTE_ADDR'], $edit['timestamp'], $status, $score, $users, $thread, $edit['name'], $edit['mail'], $edit['homepage']); _comment_update_node_statistics($edit['nid']); // Tell the other modules a new comment has been submitted. comment_invoke_comment($edit, 'insert'); // Add an entry to the watchdog log. watchdog('content', t('Comment: added %subject.', array('%subject' => $edit['subject'])), WATCHDOG_NOTICE, l(t('view'), 'node/'. $edit['nid'], array('fragment' => 'comment-'. $edit['cid']))); }