6.x 버전대

드루팔 체험(공부)하는 순서 추천

드루팔을 설치하고 나서, 아래와 같은 순서로 기능을 접하면 좋다.


1. 컨텐츠 한 건 작성 : CMS의 가장 기본 기능이니까.
이 때 컨텐츠 타입을 선택하게 되는 데 이걸 잘 기억해 두자.
(컨텐츠 타입이 드루팔의 핵심을 이해하는 키)

2. 블럭 기능 : 관리화면의 블럭 설정에서 이것저것 조작해 보자.
홈페이지의 구조가 손쉽게, 그리고 조금씩 바뀌는 게 재밌다.

3. 컨텐츠 타입의 작성 기능 : 관리화면에서 컨텐츠 타입을 하나 만들어 보자.
기본적으로는 타이틀과 본문이 있는데, 여기에 원하는 정보 항목을 추가해 보자.
(예를 들어, 음식이라는 컨텐츠 타입을 만들고, 추가항목으로 칼로리를 수치형태로)

4. 모듈 추가하기 : 아래 모듈이 없다면 반드시 설치해 보자.
Views 모듈 : https://drupal.org/project/views
이 모듈은 너무 중요해서 드루팔 버전 8부터는 코어 모듈(기본 장착)이 된다.

설치하는 법 : 모듈을 다운로드 받은 후,
드루팔_폴더/modules 혹은 sites/all/modules 폴더(이 쪽을 더 추천)에 넣고
관리화면의 모듈 항목을 살펴보면 Views 모듈이 보인다. (드루팔 7 이하의 경우)
이 모듈을 체크하고 저장하면 뷰 모듈이 활성화된다.

이후에 뷰 관련된 설정법/사용법은 아래 동영상을 참고하면 된다.
https://drupal.org/node/1351076 (영문)

php 5.4로 드루팔을 이관한 후 이런 저런 경고가 발생했다.

작년부터 드루팔은 본격적으로 버전 7이 중심이 되고(이미 시작은 오래됐음),
드루팔 6은 서서히 지원되는 모듈도 줄어들고 있다.

그래도 게으른 드루지기들은 굿굿하게 버전 6을 잘 이용하면서,
새로운 프로젝트만 7을 적용하고 있었다. 잘만 돈다면야 버전이 문제랴.

그런데 새로운 서버로 옛 사이트를 옮기면서 문제가 서서히 커지고 있다.

예를 들어 PHP 5.3은 드루팔 6과 궁합이 잘 맞는 편인데
PHP 5.4 부터는 드루팔 6은 그렇게 편하지는 않고 이런저런 경고, 에러가 뜬다.

아직도 드루팔 옛 버전을 이용하는 분들을 위해, 하나씩 문제 해결책을 메모해 본다.


php 5.4로 드루팔을 이관한 후 Block 설정 관련 경고가 발생했다.

warning: Illegal string offset 'region' in 드루팔_패스\modules\block\block.admin.inc on line 101

이와 같은 경우에는, block.admin.inc 의 101번 라인 근처의 foreach 안에
아래의 예외문을 넣으면 문제가 해소된다.

if ( !is_array($block) )  { continue; }

* 참고 : https://drupal.org/node/2004304


php 5.4로 드루팔을 이관한 후 Taxonomy 관련 경고가 발생했다.

드루팔 시스템 update시의 에러 해결 메모 : emfield, youtube 모듈 관련

드루팔 시스템을 업데이트하는 방법은 단순하다.

관리자로 로그인한 후, /update.php를 기동하면 된다.

그런데 어느 날, 통상적인 보안패치로 업데이트를 기동하니 다음과 같은 에러가 뜬다.

The update process was aborted prematurely while running update #6012 in media_youtube.module. All errors have been logged.

아무래도 최근에 소스 업데이트한 media_youtube 모듈이 문제인 듯 하다.

업데이트할 때마다 에러가 계속 나서 여타 모듈의 갱신도 전부 멈추고.

유튜브 모듈 소스를 예전으로 돌릴까 아니면 소스를 살펴볼까 어떻게 할까 고민하다가,

혹시나 해서, admin/build/modules 에서 emfield (Embeded Field Module)과 media_youtube 모듈을 활성화했다.

그리고 나서 다시 업데이트를 해 보니, 문제없이 진행이 됐다.

참고) 예전에 심각한 버그로 emfield 모듈을 정지시킨 후였다. 아래 쪽의 관련 글 참고.

해결된 이유를 조사하는 것은 귀찮아서 넘어가고, 비슷한 상황을 겪을까 메모해 둔다.

게시물에 코멘트(댓글)가 달리면, 본문 등록자에게 자동으로 메일이 가도록 하는 방법.

Subscriptions 모듈로,
게시물에 코멘트가 달리면, 본문 등록자에게 메일이 자동으로 가도록 하는 방법을 메모해 둔다.

설정이 단순하지는 않다. 메일 송신에 문제가 있는 경우의 확인을 위해
tail -f로 smtp, postfix 등의 maillog를 살펴보는 것도 필요하다.


1. 우선 Subscriptions 모듈을 설치/활성화한다.
http://drupal.org/project/subscriptions
활성화할 때, 아래 하위모듈들도 체크해 준다.

Content Subscriptions
Subscriptions Mail
Subscriptions UI
Taxonomy Subscriptions

2. 아울러 메일 템플릿 작성/편집을 위해 아래 모듈도 설치/활성화하자.
http://drupal.org/project/mail_edit

3. 아래 주소로 가서, "subscribe to content" 에만 체크를 하자. (해당 Role들에게만)
http://palpal.org/admin/user/permissions#module-subscriptions

* 다른 항목에도 체크할 경우가 있으나, 조건에 따라 대량의 메일송신이 발생하니 주의.

4. /admin/settings/subscriptions 에 가서 Mail settings 항목을 채워준다.

* 해당 사이트의 서버 부하에 걸맞는 설정이 아래 세부항목에 필요하다.
Maximum number of notifications to send per cron run:

외국발 스팸을 막기 위한 극단적 조치와 과거 이야기들

우선 사과 말씀 하나.
최근에 본 사이트에 로봇으로 등록된 계정들이
상업성 광고글과 댓글을 왕창 달았습니다.

해당 글과 댓글들은 모두 삭제했습니다만,
반성하고 개선해야하기에 기록을 남깁니다.

예전부터 본 사이트는 개방형 등록사이트로,
이메일만 중복되지 않는다면 누구나 쉽게 가입, 글을 쓸 수 있었습니다.

그러다 보니 외국발 스팸들이 어느 순간부터 설치기 시작,
한번씩 대량의 광고글들이 들이닫쳐 사이트의 신뢰성을 갉아먹더군요.

여지껏 이를 해소하기 위한 방법도 여러 번 있었습니다.

- 캡챠를 이용해서 자동로봇 등록을 막는 방법.

>> 지금도 사용하고 있습니다만, 완벽하게 막지는 못합니다.
>> 캡챠 확인글로 한글을 입력하게 하는 방법도 있긴 합니다. (외국발 스팸 방지용)

- 스팸 방지 모듈들을 사용하는 방법. (spam, http:BL, spambot 등 모듈)

>> 설정이 까다롭거나 작동이 완벽하지 않을 수 있습니다.

- 드루팔 모듈의 보안패치를 부지런하게 수행한다.

>> 말 그대로 부지런해야 합니다. 뭐, 다른 CMS보다야 과정이 나은 듯 합니다만.

이런 저런 기술적 방법들이 있는 것 같습니다만,
날고 기는 스팸머들에게는 방어벽을 업그레이드할 여유가 늘 부족한 듯 합니다.

그. 래. 서.

실제로 등록하실 분들에게 심히 죄송스럽게도 (많이 번거롭겠지만)
등록 승인제로 바꾸기로 했습니다. 게다가 로봇 등록을 막기 위해
등록시 확인정보(인간만이 입력할 만한 정감있는 내용?!)도 묻습니다.

컨텐츠 종류에 따라 노드 정보(글의 작성자, 등록일시)의 출력형태를 커스터마이징해 보자.

팔팔.오알지는 오래된 글들이 많다.
제일 오래된 것들은 2007년 9월의 글이다.

그럼에도 불구하고 이들 글들은 대부분은 아직도 유효하다.
대부분의 글들이 드루팔 메이저 버전5와 6에서 작성됐으며
버전 6의 경우에는 아직도 현역이기 때문이다.
(드루지기들은 대부분의 실무 프로젝트를 이 버전으로 합니다)

최근에는 버전 7이 주력으로 돼 가고 있으나, 버전 6에서의
모듈들이나 기능들은 7에서도 거의 비슷한 형태이다.
(요약하자면 드루팔 6을 잘 다룰 줄 알면 7도 그렇게 어렵지 않다는 말입니다)

그래서인지 예전 글들임에도 불구하고 종종 다시 보게 되고,
틈틈히 글 내용을 수정하면서, 옛 글도 새 글 못지 않게 생명력을 가지게 되었다.

하지만, 보통의 드루팔 테마들은, 노드 정보(글 정보. submitted by....와 날짜 부분)가 안습이다.

아래 옛 테마의 노드 정보 형태를 보라. 한영 섞인 것도 아쉬운데다가 날짜는 왜 최초 작성일 뿐인가. 다시 수정한 글은 새 글 못지 않은데, 수정한 날짜가 보이질 않는다.

작성자 이름 Posted at 12:48 on 토, 05/25/2008

혹은

Submitted by palpal on 일, 2008-05-25 12:48

차라리 보이지 않았으면 해서, 관련글 [컨텐츠 종류에 따라 글의 작성자, 등록일시를 화면에서 보이지 않고 싶은 경우] 같은 시도도 있었다.

하지만 뒤늦게 아래와 같이 노드 정보를 커스트마이징 가능한 모듈을 찾았다.

저장될 파일의 패스를 자동으로 설정할 수 있는 File (Fields) Paths 모듈

하나의 컨텐츠 타입을 작성하고 그 타입의 필드 중에
파일 요소를 몇 개 추가하는 경우가 있다.

이 때 지정한 파일들은 컨텐츠 작성시 하나의 폴더에 저장되는 것이 일반적이다.
문제는, 세월이 흘러 해당 폴더에 파일들이 너무 많아지면,
서버의 퍼포먼스에 문제가 발생할 수 있다.

이런 경우에 파일을 분산저장 가능한 아래 모듈을 이용하면
문제를 사전에 예방할 수 있다.

http://drupal.org/project/filefield_paths

모듈을 설치/활성화하고, 설정화면의 Paths항목에
여러 가지 Replace Patterns 중 하나를 활용하면
컨텐츠 생성하고 파일 업로드할 때 저절로
해당 폴더 안으로 파일들이 분산 저장된다.

예를 들어, 노드 번호별로 된 폴더를 지정할 수 있고,
랜덤한 문자열로 된 폴더를 지정할 수도 있다.

또한 이 모듈과 File Aliases 모듈을 혼용하면,
다운로드할 파일 링크나 파일명을 자유롭게 조절, 변형 가능하다.
업로드된 원래의 파일 패스를 숨기고 싶을 때 유용하다.

Drupal 개발자용 예제 코드 모음

Drupal 개발자용 예제 코드 모음

코어와 관련된 것들은 아래 주소에 있다.
http://drupal.org/project/examples

드루팔 버전에 따라 작동하지 않는 예제도 있을 수 있다.


action_example Creating Actions
ahah_example Using AHAH forms
ajax_example Using AJAX forms
batch_example Using the batch API
block_example Defining blocks
cache_example Using cache APIs in Drupal
cron_example hook_cron() and family demonstration
dbtng_example Database examples (DBTNG)
email_example Sending e-mail
entity_example Custom entities in Drupal
field_example Defining fields in the Field API
file_example Handle files
filter_example Defining an input filter
form_example Fom API: multistep, states, elements
image_example Image example (styles and effects)
js_example Javascript example

Drupal Search Result 화면을 커스터마이징 하려는 경우, 관련 링크들

제목 그대로, 검색 결과 화면을 수정하고 싶은 경우의 자료 모음입니다.
꼭 찍어서 이게 최고로 좋은 방법이다라는 지정은 없고, 메모 수준입니다.
모두 영문 기사라서 조금 아쉽네요.

Drupal Search Result에 관해 전체 윤곽이 잡히는 글. 추천!
http://adaptivethemes.com/theme-your-search-results

Drupal Search Result에 관해 뷰 연동이 가능한 예. (결과를 뷰에 넣으면 블럭이든 뭐든지 가능)
http://bxcollective.com/drupal-6-obtain-nids-to-theme-search-results-page/

관련된 표준 API
http://api.drupal.org/api/drupal/modules!search!search-result.tpl.php/6
http://api.drupal.org/api/drupal/modules!search!search.pages.inc/function/template_preprocess_search_result/6

기타 등등

how to theme search results in Drupal 6
http://drupal.org/node/256400

플로팅바 형태로 검색폼을 출력. (검색결과가 아니라서 아쉬움)
http://www.rundrupal.com/tutorials/adding-search-floater-bar-your-theme

Customizing the search results

드루팔의 노드 검색 결과에 특정 컨텐츠 필드(예:이미지)를 추가하는 법

드루팔 사이트의 검색은 CSE모듈을 이용해서 구글에 맡기는 것이 좋은데,
비공개성이 강하거나 회원제 사이트라면 드루팔의 표준 검색 모듈 Search만을 이용한다.

어떤 개인 프로젝트에서 검색 결과 화면을 수정해 이미지를 출력하는 요건이 있었다.
쉬울 거라 예상했는데, 드루팔의 기본 검색 결과 화면을 커스터마이징하는 건 어려웠다.

* 조건 : 소스 코딩을 하지 말 것.
(소스나 테마를 수정하면 뭐든지 되지만, 시간이 많이 걸리고 나중에 버전 관리가 어렵다)

- 우선 drupal.org에서 Custom Search Results로 찾아보았다.
검색 결과를 수정가능한 모듈이 있는지 살펴봤는데 몇몇 후보 모듈들의 기능이 엉뚱했다.

 Saved Search... 모듈 : 기존 검색결과를 임시 저장한다?!
View Search 모듈 : 이 또한 기존의 검색결과를 이용해 뷰를 만들 수 있다고.

- 그래서 검색 결과를 수정가능한 테마가 있는지 살펴보기로 했다.

Smokes... 등 몇몇의 검색결과 옵션을 보유한 테마가 있었지만
단순히 작성자나 날짜 등의 온/오프 설정 뿐이어서 세밀한 커스터마이징이 불가능했다.
더 세밀히 검색결과를 조작하려면 search-results.tpl을 수정해야 했다.
코딩이 발생하므로 귀찮아서 스킵.

- "search results"로 모듈을 다시 검색하다가 Display Suite가 있음을 발견했다.
이미 유용한 모듈로 알고는 있었지만, 검색 결과마저 수정해 주는 줄은 몰랐다.

Syndicate content