컨텐츠간 상호 링크 참조에 강한 LinoDef 모듈의 집중 연구

컨텐츠간 상호 링크 참조에 강한 LinoDef 모듈의 집중 연구
----------------------------------------------------------------

얼마 전, 컨텐츠 생산성을 향상시키는 몇몇 입력 필터 모듈 소개에서도 나왔다.
우선 대단한 모듈이라 칭찬하지 않을 수 없다. 이 모듈을 기획/제작한 독일인은 기발한 인물일게다.

얼핏 보면 단순한 기능(본문과 댓글의 특정 부분에 링크를 걸어준다)인 것 같지만,
그 사용하는 인터페이스가 아주 재밌다.
다소 불편해 보이는 태그 방식부터, 커스터마이징이 가능한 버튼 형태까지 다양하다.

LinoDef 모듈 - http://drupal.org/project/linodef

Insert elements & internal links (Linodef) 모듈이라고 부르는 것이 공식 명칭이다.
본문과 코멘트(댓글)에 있는 특정 부분을 원하는 노드 Title이나 용어 Term으로 치환한다.

여타 컨텐츠의 노드ID 번호로 링크를 손쉽게 걸 수도 있고,
여타 컨텐츠의 CCK 특정 필드를 대상으로 링크를 걸 수도 있고,
여타 컨텐츠의 Taxomony를 대상으로 링크를 걸 수도 있다.
하지만 Syntax가 헛갈리는 측면이 있어 조금 사용하기 불편해 보인다. 익숙해지면 좋을 듯.

주의) # 형태의 주석은 FootNotes 모듈과 같은 입력 Syntax를 사용하므로 충돌이 날 수 있다.

사용법 예)

1. 본 모듈을 설치/활성화한 후에,

2. 입력 필터 설정 admin/settings/filters 에서
새로운 입력 필터의 [추가]를 선택하고,
필터 종류에 Linodef - Link nodes & taxonomy terms and embed field values & term names.
항목을 체크/저장해 주면 "Linodef 가 적용되는 입력필터"가 준비된다.

3. 컨텐츠 타입 설정 admin/content/types 에서
새로운 컨텐츠 타입의 [추가]를 선택하고, 컨텐츠 타입 정보를 입력/저장한다.
이 컨텐츠 타입명을 (예를 들어) "ctype_linodef_enable" 라고 가정하자.

4. 새로운 컨텐츠를 "ctype_linodef_enable" 타입으로 작성할 때,
본문 하단에 있는 입력 필터를 과정 2에서 준비한,
Linodef - Link nodes & taxonomy terms and embed field values & term names.
로 지정하고 "적절한 본문 내용"을 입력/저장한다.

5. LinoDef 필터에 "적절한 본문 내용"은 다음과 같은 예문을 이용, 확인 가능하다.

    * Embed node title and link to the node: [#ID]     예) [#제목을-참고할-노드번호]
    * Embed field value and link to the node: [#ID:field_name]
    * Embed certain field value and link to the node: [#ID:field_name:field_value_number]

   몇몇 옵션도 이용할 수 있다.
    * Embed an element with options: [#ID,option1,option2,...]
    * Embed a field value with options: [#ID:field_name,option1,option2,...]
    * Embed a certain field value with options: [#ID:field_name:field_value_number,option1,option2,...]

   옵션 이용의 예) 이 사용법은 아주 중요하다!
    * [#5,tid]         용어5를 표시하고 링크도 걸어줌. 이때의 #ID는  노드가 아닌 용어 Term이다.
    * [#5,nolink]   노드5의 제목을 표시하고 링크를 걸지 않음.
    * Combine options in any sequence: [#5,tid,nolink] == [#5,nolink,tid]

   코멘트 기능이 있어서 #ID로만 처리할 때의 직관성 부족을 해결할 수 있다.
    * Use comments to give information about the tag during editing: [#ID comment]
    * Comment a field content: [#ID:field_name:field_value_number comment]
    * Comments work together with options: [#ID:field_name:field_value_number,option1,option2,... comment]

   노드 제목을 그래도 보여주지 않고 변경해서 링크를 거는 경우에는,
    * <#ID>your Text</#>

아주 중요하고 특이한 기능은 "버튼으로 여타 컨텐츠를 손쉽게 참고"하기가 가능한데,
이 기능은 BUEditor 모듈 - http://drupal.org/project/bueditor 와 연동해서
본문 작성시 기존 컨텐츠들의 참고 기능을 버튼으로 가능케 한다. (이미지 참고)

LinoDef 입력 필터를 사용한 본문 예
LinoDef 입력 필터를 사용한 본문 예

이 기능의 사용법은 쉽지만 설정이 조금 까다로운데,

1. 우선 LinoDef 모듈과 BUEditor 모듈을 설치/활성화하고,

2. BUEditor 모듈의 설정화면 admin/settings/bueditor 에서
기본 default 형태를 [편집]하기에 들어가서, Import Buttons 항목을 선택한다.
이때 보이는 CSV file containing the buttons: 항목에
LinoDef 모듈의 버튼 설정용 CSV 파일
( 아마도 modules\linodef\modules\linodef_buttons_bueditor 폴더에 있을 듯 )
를 선택/업로드한다.

3. 그런 다음, 컨텐츠를 새로 생성할 때 BUEditor의 상단에
새로운 버튼이 추가된 것을 확인할 수 있다. 한번 사용해 보면 금방 이해가 된다.

* 특히 컨텐츠 타입에 따른 버튼 분리추가 가능하다!
예를 들어 admin/settings/bueditor/1 에 가서 버튼 추가항목에

php: // Button for Linodef tags.
// Enter a fieldname, content type or vocabulary ID.
// E.g. 'field_example', 'story' or '10'.
// $drupal_element = 'enter_your_element_here';
$drupal_element = '컨텐츠_타입명';
// Set the button type to 'list', 'popup' or 'autocomplete'.
$button_type = 'list';
// Add tag options, separated by comma.
// E.g. 'nolink' or 'nolink,translation=de'.
$options = '';

// Do not modify.
if (module_hook(linodef_buttons_bueditor, buttons)) {
    return linodef_buttons_bueditor_buttons($drupal_element, $button_type, $options);
}
else {
    return t('Module !module not enabled!', array('!module' => 'Linodef Buttons - BUEditor'));
}

을 입력/저장하게 되면, 컨텐츠 작성시 BUEditor 상단 버튼에
"컨텐츠_타입명"으로 된 컨텐츠 목록을 손쉽게 참고해서, LinoDef 스타일로 입력할 수 있게 한다.

추가) BUEditor에 관한 소개가 부족하다. WYSIWYG레벨은 아니고 태그 입력 도우미 모듈이다.
이 에디터는 기능은 작아 보이지만, 제일 안정!!!되고 커스터마이징이 쉬운 Editor이다.
이 에디터는 모듈을 설치/활성화하고 나면 모든 컨텐츠 타입의 작성에 기본적으로 나타난다.
참고로 본 글을 쓸 당시에 사용한 버전은, http://drupal.org/project/bueditor 에 있는
http://ftp.drupal.org/files/projects/bueditor-6.x-2.2.tar.gz 였다.

참고) http://drupal.org/node/328898 주소에 있는 사용법 설명이 좋다.

제한) 노드의 제목(Title) 부분은 #ID가 적용되지 않는 것 같다. 2009년 1월 기준으로.

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

댓글

추가 기록 : 1. 위 모듈의 README를 보니,

추가 기록 :

1. 위 모듈의 README를 보니, 입력 필터 설정시 순서조정에서는 제일 위로 하기를 권장했다.
Order ---
Go to the sort/order tab of the input type and move Linodef to the top so it has
the lowest weight. This step is important! Only that way e.g. the HTML filter is
able to remove undesired HTML tags from elements embedded by Linodef.

2. 어떤 이는 입력 필터 설정시 HTML attributes를 동시를 체크하니 좋지 않았다고 한다.
http://drupal.org/node/997800
Adding a custom css class to a linodef taglist breaks wysiwyg integration.

3. 본 모듈을 설치/활성화한 후에 /filter/tips 로 가 보면, 자세한 사용예 설명이 나온다.

4. 아래 주소들에서 각각의 에디터 모듈들과의 연동에 관한 설정 정보가 찾을 수 있다.
Add taglist buttons to BUEditor - http://drupal.org/node/501690
Add taglists to WYSIWYG - http://drupal.org/node/855642

* 사족 : 오랜 만에 다시 기동해 보니, 위 게시글 대로 하면
BUEditor의 제일 우측에 taglist가 생기는데 제대로 작동치 않고,
/linodef/taglist/linodef_bueditor/active 에서 404가 발생하는 것 같다.

으으... 이번 건은 시간상 원인 분석이 안될 것 같다.
좋았던 모듈도 설정이 복잡하면 언젠가는 고장이 나는 걸까?
웹계의 터미네이터답게 드루팔의 또다른 해결 방법을 찾아보는게 원인 분석보다 빠를 듯.

-- 기능이 많아도 고장 잘나거나 복잡한 건 싫어 --
시간이 갈수록 우리는 게으른 방향으로 가고 있다.