6.x 버전대

드루팔의 컨텐츠 관리 인터페이스를 업그레이드 해 보자. Content Management Filter 모듈(CMF)

드루팔은 중소규모의 강력한 CMS툴임에도 불구하고,
기본적인 컨텐츠 관리 화면(admin/content/node)이 기대에 못미친다.
특히 컨텐츠 관리 화면의 문자열 검색 기능 부재는 아쉽다.

이는 검색 기능을 별도의 인터페이스(블럭이나 테마부속)로
준비해 두었기 때문에 문자열 검색을 굳이 컨텐츠 관리화면에
둘 필요가 없었던 것이 원인이라 여겨진다.
하지만 때로는 컨텐츠 관리화면에도 보편적인 문자열 검색이
있었으면 할 경우가 있다. 그럴 경우에 이용 가능한,

Content Management Filter 모듈(CMF)을 소개한다.
http://drupal.org/project/cmf

백문이 불여일견이다. 모듈 설치/활성화하고
기존 컨텐츠 관리 화면이 아닌, 새로운 화면 (admin/content/filter)에 가 보라.
이제야 그럴 듯한 CMS의 컨텐츠 관리화면 답다.

문자열 검색 이외에도 여러 기능이 있다.

* Show nodes, comments or both
* Filter by author (select from drop-down list)
* Filter by author (enter username in AJAX search field)
* Filter by user role (shows nodes authored by any user in the selected role)
* Filter by user status (active or blocked)
* Filter by title or body substring

메일 송수신 실패시 리턴 메일을 받도록 Return-Path 지정하기

메일 송수신 실패시 리턴 메일을 받도록 Return-Path 지정하기

메일 수신주소나 서버의 이상으로 에러 메일이 반송되는 경우,
이를 Return-Path라는 헤더 정보에 담아둔 주소로 보낼 수 있다.

그런데 보통의 웹호스팅 사이트들이 이를 코딩에서 조정하는 것을
우선으로 하지 않고 해당 서버명이 들어간 메일어드레스로 강제지정하는 경우가 많다.

http://drupal.org/project/returnpath
이런 경우에 Return-Path 모듈을 사용하면,
드루팔 메일 센드 drupal_mail_send함수를 이용한 Return-Path의 지정이 가능하다.

--- 2010.09 추가 ---

최근 한 프로젝트에서, 리턴 패스가 제대로 작동하지 않고 호스팅 회사의 주소가 그대로 보이는 경우가 있었다. 소스 상에도 모듈 설정 상에도 문제는 없었다.
한참 조사한 뒤에 알았는데 - "모듈의 해제 후 재설정"에도 무반응이었으나 -
"모듈의 해제 후 언인스톨!(모듈 화면에 있다. 디비 설정도 몇몇 청소한다)하고 재설정"했더니 문제 현상이 고쳐졌다.
귀한 정보를 주신 ta님에게 감사 드린다.

View를 이용해서 로그인 유저의 컨텐츠만 보여주는 방법들, 1대1 게시물 기능

View를 이용해서 로그인 유저의 컨텐츠만 보여주는 방법들은,
여러가지가 있으나 제일 보편적인 방법은 view arguments 이용하는 것이다.

예를 들어 uid가 99인 사용자가 로그인했을 때 그 사용자가 지금껏
작성한 컨텐츠 목록만을 특정 뷰로 보여줄 경우, (아래는 중요한 팁이다)

해당 view의 편집 > Arguments > Action to take if argument is not present:
항목의 Provide default argument > User ID from logged in user
항목을 선택해 주고 Path를 abcd라고 지정해 주자.

다음부터 /abcd라는 URL에 접근하면 해당 사이트의 로그인 유저가 작성한
목록만을 담은 뷰가 보인다.
예를 들어 uid 99 인 사용자가 로그인하면 본인이 작성한 글만 뷰에 나타난다.

중요한 것은 이 경우 브라우저의 URL에는 유저의 ID가 노출이 안된다는 점이다.
예를 들어 /abcd/99라고 하지 않고 /abcd만 해도 UID 99 유저가 작성한 글만 뷰에 나타난다.

---------------

이 외에도 private모듈이나 view_own모듈을 이용해서 본인의 글만 보이도록 하는
기능이 있으나 특정 모듈에 종속되니 뷰 보다는 자유도가 다소 떨어진다.

위 팁은 아래 주소에서 참고했다.
http://views-help.doc.logrus.com/help/views/example-author-block
http://drupal.org/node/54455

SQL 쿼리를 이용한 드루팔 컨텐츠의 갯수를 확인할 때

참고 - http://api.drupal.org/api/function/db_result/6

Count rows in a table using db_result:

$countrows = db_result(db_query("SELECT count(*) FROM {my_table}"));

드루팔 API인 db_result 함수를 이용하면 count(1) 등이 손쉽게 얻어진다.

사용법이 너무나도 당연한 팁이지만,
간혹 다른 함수를 사용해서 갯수를 세려고 하면 애를 먹을 수도 있기에 메모한다.

Computed Fields를 이용해서 프로그래밍이 가능한 동적 CCK 구현하기

Computed Fields를 이용해서 프로그래밍이 가능한 동적 CCK 구현하기

이 모듈은 쓸모가 많고 중요하다. http://drupal.org/project/computed_field

- PHP와 드루팔의 컨텐츠 필드개념을 잘 모른다면 사용하기 까다로울 수 있다.
- 드루팔 6.x 뿐만 아니라 7.x대로 지원하는 모듈이다. 각각의 사용법이 조금씩 다르다.

------ 7.x 기준의 설명 ------

예를 들어, 한 컨텐츠 타입의 attch2nd라는 필드가 있는데 aliasofattach라는 필드에서는 이를 변형해서 출력하는 예제를 준비해 보았다. (주의 : attach2nd였는데 미스 스펠로 인해 a가 빠짐)

컨텐츠 타입의 aliasofattach 필드 설정에서,
Computed Code (PHP)에는

// debuggging // $entity_field[0]['value'] = $entity->field_attch2nd;
$arrfield_for_another = array_pop( array_pop( $entity->field_attch2nd ) );
$entity_field[0]['value'] = $arrfield_for_another['origname'];

Display Code (PHP)에는

// 랜덤 확인용 // $display_output = 'dis'.rand(100000, 999999);

CCK 필드를 이용하면 컨텐츠 내 블록을 표시하기 편하다 - 중요 팁

CCK 필드를 이용하면 컨텐츠 내 블록을 표시하기 편하다 - 중요 팁 ***

아, 왜 지금까지 이걸 깨닫지 못했는지 참으로 멍청했다.
이 팁은 다음과 같은 경우에 유용하다.

Taxonomy 관련 Block 을 만드는데 유용한 모듈들

Taxonomy 관련 Block 을 만드는데 유용한 모듈들을 소개한다.

1. 제일 좋은 모듈은, 사용법이 심플하면서 블럭 제어가 손쉬운
http://drupal.org/project/taxonomy_blocks

* 모듈 설치 활성화 후에, 각 Vocabulary의 설정에 가면 블럭 사용유무와 갯수를 지정할 수 있다.

2. 아래는 다소 번잡하다. 기능은 풍부하지 않을까. 테스트도 아직 부족하다.
http://drupal.org/project/taxonomy_block

그외 모듈들이 아주 많은데...
팔팔에서도 이미 소개했듯이 카테고리 분류는 Taxonomy로 하는 것이 제일 좋다.
본 기사의 아래에 보면 관련글에 나와 있을 것이다.

드루팔 사이트 내 검색 관련 중요 모듈들

드루팔 사이트 검색도 구글 등을 이용하면 충분히 좋지만,
로그인 등 인증이 필요한 곳은 드루팔 자체의 검색을 이용하기 마련이다.

사이트내 검색 관련해서 중요 모듈들 몇 가지를 소개한다.

1. http://drupal.org/project/search_type
Adds a type selector to search blocks to limit searches by content type or to search users. The selector appears only for users with the "use advanced search" permission.

2. http://drupal.org/project/search_block
Restricted Search is a module which lets administrators exclude individual nodes or entire content types from the search system.

3. http://drupal.org/project/search_config
This module started out as a simple means of configuring the display of the advance search form. A few features have been added since thanks to the contributions of others.

그 외 다수 있으나 나중에 추가하겠다.

Views 조차 Design 바꾸고 싶은 경우, Views Theme 기법

뷰는 강력한 컨텐츠 목록/내용 표시 모듈로,
드루팔로 진행하는 프로젝트에서 필수적으로 사용해야 할 모듈이다.

Views는 자유도가 상당히 높은 편이지만,
커스터마이징을 100% 만족할 수는 없다.

이런 경우 Views조차 Design 변경하는 테크닉을 마스터하면
드루팔로 거의 원하는 모든 화면을 만들 수 있겠다.
예를 들어 특정 컨텐츠 목록을 우리가 원하는 형태로 수정/Theme 작업하고 싶은 경우에는,
[hook]_views_pre_render 함수를 이용해서 일부 화면 수정이 가능한데,
이에 관한 자료는 다음의 주소에서 참고할 수 있다.

Views 페이지/블럭도 HTML,디자인 편집하고 싶은 경우

Views 페이지/블럭도 HTML,디자인 편집하고 싶은 경우의 자료는 드물다.

우선적으로 중요한 것을 기록하고 나머지는 차근차근 추가해가려고 한다.
Views 2 Unofficial Tutorials
http://drupal.org/node/322506

Alter views using pre alter function - 아주 좋다. 테마 변경에 독립적인 듯.
http://drupal.org/node/438370
http://drupal.org/node/422264#comment-1466510

Create a view on a node reference field
Get the result a view creates
Inserting Views (2.x)
Limiting Content Using Arguments And PHP Code
Override taxonomy pages with Views 2
Views 2 theming

등이 있다.

Syndicate content