컨텐츠을 생성할 때 자동으로 본문에 뭔가를 추가해 넣으려면

제목 : 컨텐츠을 생성할 때 자동으로 본문에 뭔가를 추가해 넣으려면...

컨텐츠 입력이 잦은 어떤 사이트에 필요한 과제인데,
컨텐츠를 생성할 때마다, 컨텐츠 본문의 상단에
자동으로 특정 문장(예: 본문의 일부 문장)이 추가되어
입력/표시되게 하라는 것이었다.

이를 위해 아래와 같은 방법을 숙고해 보았다. 참고로 제일
무난해 보이는 방법은 3번이다.

1. Actions 모듈(혹은 Trigger / Work Flow)을 이용해서
새로운 컨텐츠의 생성시 자동으로 노드 본문에 특정 문장을 추가한다?!
* 하지만 컨텐츠 입력 단계에서는 아직 특정 문장이 보이지 않는다.

2. Contemplate 모듈을 이용해서
새로운 컨텐츠의 본문 상단에 특정 문장이 보이도록 한다?!
* 하지만 컨텐츠 입력 단계에서는 아직 특정 문장이 보이지 않는다.
* 게다가 이 방식은 실제로 특정 문장이 입력/저장되는 것이 아니다.

3. 해당 컨텐츠 타입의 "설정" 기능(컨텐츠 관리 > 컨텐츠 타입)에서,
새로운 필드 하나를 추가한 다음, 그 필드의 설정 화면으로 이동한 후,
Default(기본) 입력값에 PHP 코딩 및 태그 등이 적용되게 함으로써
특정 문장이 아예 입력단계에서 보이도록 한다. 수정도 가능하다.
또한 기본적으로 작동할 Input Filter 를 지정해 수작업을 줄인다!

* 권고 사항으로는, 가능하면 CCK를 이용해서 특정 문장이
해당 컨텐츠의 특정 필드로 저장
되는 것이 나중에 검색 등에 유리.
특정 Field 로도 입력단계에서 미리 준비된 문장이 보이게 하거나,
수정된 문장이 저장/검색/입력필터링되도록 하는 것이 가능하다!!

Your rating: None 평균 : 4 (1 vote)

댓글

최근에 작성된 특정

최근에 작성된 특정 컨텐츠 타입(예:CCCC)의 최신 글 하나를 참고하는 SQL은, 아래와 같다.

        SELECT n.* FROM node AS n
        WHERE n.type = 'CCCC' AND n.status = 1 ORDER BY n.created DESC LIMIT 1

 
이를 응용해서 좀 더 자세한 정보, 특히 해당 컨텐츠 타입의 특정 필드 정보까지 알아내려면,
다음과 같이 SQL을 입력하면 된다. 특정 컨텐츠 타입의 최신 글 하나의 필드 정보를 취득한다.
참고로 content_type_CCCC 테이블은 컨텐츠 타입의 구성 정보와 관련 있다.

SELECT * FROM content_type_CCCC AS c WHERE c.nid=(
        SELECT n.nid FROM node AS n
        WHERE n.type = 'CCCC' AND n.status = 1 ORDER BY n.created DESC LIMIT 1
)

위 댓글의 SQL을

위 댓글의 SQL을 이용해서 최근에 작성된 컨텐츠의 특정 필드값을 참고,
또다른 컨텐츠를 작성할 때, (위 본문에서 설명한)Default값을 PHP 코드 형태로 넣을 수 있다.

아래가 그 예이다. 이전에 작성한 CCCC 타입의 컨텐츠 노드에서
폭과 높이 필드에 입력된 값을 참고해 오는 것이다.
물론 CCCC 타입의 컨텐츠 필드로 폭(field_width_value)과
높이(field_height_value) 항목이 이미 준비돼 있는 경우에 해당한다.

$sql = "SELECT c.* FROM content_type_CCCC AS c WHERE c.nid=(
        SELECT n.nid FROM node AS n
        WHERE n.type = 'CCCC' AND n.status = 1 ORDER BY n.created DESC LIMIT 1
)";
$result = db_query( $sql );

$latest_node = db_fetch_object($result);

/********* $latest_nodeの結果例 **********
stdClass::__set_state(array(
   'vid' => '1743',
   'nid' => '1727',
   'field_width_value' => '300',
   'field_height_value' => '400',
))
*****************************/

$width = $latest_node->field_width_value;
$height = $latest_node->field_height_value;

$final = array();
array_push( $final, array('value'=>'[IMG:'.$width.':'.$height.']', 'format'=>'') );
return $final;

위 리턴값 $final로

위 리턴값 $final로 인해,
새로 CCCC 컨텐츠 타입을 생성할 때,
해당 컨텐츠 필드에는 [IMG:300:400]이라는 값이 미리 들어가 있게 된다.

위 본문의 팁은

위 본문의 팁은 컨텐츠 노드를 새로 작성할 때 미리 준비된 글이 나타난다.

만일 노드 생성과 달리 댓글을 생성할 때에 미리 준비된 Disclaimer를 항상 나타나게 하려면,
http://drupal.org/node/359580 를 참고하면 되겠다.