7.x 버전대

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

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

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

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

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

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

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

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

- 스팸 방지 모듈들을 사용하는 방법. (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가 있음을 발견했다.
이미 유용한 모듈로 알고는 있었지만, 검색 결과마저 수정해 주는 줄은 몰랐다.

상세 검색시 특정 카테고리를 복수 선택하는 편한 방법 - Custom Search 모듈

상세 검색시 특정 카테고리를 복수 선택하는 편한 방법 - Custom Search 모듈

드루팔의 기본 Search 모듈은 무난한 편이지만, 몇몇 아쉬운 점이 있다.

그 중 한 문제가, 카테고리(Taxonomy)가 아주 많이 분화된 드루팔 사이트의 경우,
상세 검색 Advanced Search를 눌렀을 때, 카테고리를 선택하는 창이 굉장히 불편하다.
특히 선택창에서 특정 텀즈를 복수개 선택해야 하는 경우에는 컨트롤키를 누르면서 조작하는데,
텀즈 갯수가 많은 경우에는 스크롤하면서 컨트롤키를 누르는게 여간 번거로운게 아니다.

그래서 찾아보았다. "상세 검색창의 카테고리들을 체크박스 형태로 바꿔 주는 모듈이 있는지"를.

아래 후보들 중에, 본 문제해결에 제일 알맞은 것은 3번 Custom Search 모듈이었다.

1. Search Config 모듈 : http://drupal.org/project/search_config

팔팔.오알지의 다른 글(http://palpal.org/node/402)에서도 아주 짧게 소개됐었다.

Search Config 은 생각보다 강력하지 않은 것 같다. 매뉴얼에는 상세 검색의 카테고리를 체크박스 형태로 보여준다고 돼 있는데... 그런 기능이 없는 것 같다.
관리자 로그인후, admin/settings/search에 추가된 Search Config 관련 설정 화면을 보면, 상세 검색에서 디폴트로 조정가능한 항목이 보이는데 안타깝게도 카테고리를 체크박스로 보여주는 설정은 없다.

아직 저장하지 않았는데 쓰던 글 날려버렸어.... 드루팔 Autosave 모듈로 예방하자

웹 화면에서 바로 글을 작성하는 것은 편한 점, 나쁜 점이 있다.

나쁜 점 중 하나는, 폼에 많은 글을 작성하던 도중에 날려먹는 문제다.

문제의 패턴에 빈번한 예가 아래 세 가지로,
1. 쓰는 도중에 브라우저가 확 죽어버리거나 멈추는 현상. (특정 스크립트 등에 의해)
2. 쓰는 도중에 백 버튼이나 여타 링크를 눌러버림, 돌아와 보니 쓰던 글 사라짐.
3. 다 쓰고 저장 버튼을 눌렀는데, 로그인 풀림이나 인증 문제 등으로 이상 발생.

얼마나 애를 많이 먹었는지, 예전에 우리나라의 모-보드는 이런 문제를 원본소스 수정한 팁으로, 글 쓰는 중간중간 혹은 저장버튼 누를 때 클립보드에 자동(Ctrl+C)으로 저장되도록 하는 방법을 사용했었다.

위 문제들의 근본적으로 피하려면, 가능한 로컬 상 (잘 죽지 않는) 메모장 등에서 글을 작성하고 수시로 저장하며, 다 쓰고 나서 복사/붙여넣기로 웹 화면에 글을 투고하는 방법이 있지만, 으--- 귀찮다.

드루팔을 주력으로 사용하는 드루지기들도 위 문제를 몇 번 당하다가, 짬을 내서 해결책을 찾아보았다.

결론부터 말하자면, 다소 많은 방법들이 있는 것 같았지만 복잡해 보였고, 딱 원하는 기능은 없어보였다. 그 중에서도 Autosave 모듈이 제일 무난한 것 같아 소개한다.

http://drupal.org/project/autosave

설치/사용법 (아래는 전부 관리자로 로그인한 상태에서 실행)


1. 모듈을 다운로드해 설치, 관리자에서 활성화한다.

노드들을 특정 순서로 배열하고 싶은 경우 (특히, Drag and Drop 방식으로)

노드들을 특정 순서로 배열하고 싶은 경우 (특히, Drag and Drop 방식으로)

한 프로젝트에서 "복수의 노드들을 이용해서 순서를 가진 시리즈물(책 형태?)"을 만들 일이 생겼다.

본디 드루지기들은 드루팔의 북(이하 책) 기능을 싫어해서 어지간해서 사용하지 않았는데,
요즘은 어떤가 싶어 새로이 살펴보니, 예전에 그 불편했던 책 컨텐츠 설정 방식이 아니었다. 아직도 아주 편한 상황은 아니지만 이제는 도입해 볼 만큼 자유도도 높고 여타 기능과의 호환성이 좋아진 것 같다.

아래 영문 자료를 보고, 괜찮은 노드 배열 모듈들을 조사해 보았다.
하지만 (게으른 탓에) 쓰기 편한 2가지만을 골라 기록해 둔다.

Comparison of Node Ordering Modules (아주 좋은 자료)
http://drupal.org/node/398508

우선 아래 드래그블뷰 모듈!

http://drupal.org/project/draggableviews
첫 설정이 약간 까다롭지만 튼실해 보인다.
인스톨 및 설정은 README.txt 파일을 참고하면 된다.

기억나는 대로 기록해 두자면,


1. 드래그블뷰 모듈 설치/활성화
2. 뷰 하나를 준비. (이하 해당뷰)
3. 해당뷰의 필드에 DraggableViews: 나열순 항목을 추가한다.
4. 해당뷰의 Sort criteria에 DraggableViews: 나열순 항목을 추가한다.
5. 해당뷰의 Style을 드래그블 테이블로 바꾼다.

각종 폼의 Field 모양새를 조정하는데 도움되는 모듈들

각종 폼의 Field 모양새를 조정하는데 도움되는 모듈들

- Content Display Order 모듈 ★★★
http://drupal.org/project/content_display_order

특정 컨텐츠 타입내의 필드 표시 순서를 손쉽게 조정할 수 있다.
드루팔 6에서도 잘 작동한다.

- Contemplate 모듈 (Content Template)
유명하다. 하지만 드루팔 7부터는 사라질 예정이다.
설정법이 복잡하다. 그만큼 커스터마이징이 자유롭다.

- 위와 비슷한 목적의 모듈들이 드루팔 7에 더 많다.

Field display weights (per node)
http://drupal.org/project/field_weight

또는

http://drupal.org/search/apachesolr_multisitesearch/node%20field%20order...

_____________________

- Arrange Fields 모듈
http://drupal.org/project/arrange_fields

This module lets you drag-and-drop the fields of any CCK content type, Webform, or almost any other form in Drupal into the positions you would like for editing.

- Compact Forms 모듈

Syndicate content