6.x 버전대

YouTube 동영상을 FeedAPI로 불러들일 때 Thumbnail 이미지를 설정하는 (새로운) 방법

YouTube 동영상을 FeedAPI로 불러들일 때 Thumbnail 이미지를 설정하는 방법은,
이미 본 사이트의 다른 노드에서도 기록했으나, 모듈의 버전업에 따라 새롭게 주의할 점이 나타났다. 그래서 메모해 둔다.

사용 모듈 - emfield, media_youtube

1. 미디어 유튜브 모듈은 드루팔용 젠더도 필요로 한다.
자세한 내용은, 예전에 써 둔 댓글에서 인용한다.

최근에 업데이트된 emfield 에서는 각각의 3rd Party 동영상 설정을 직접 하지 않게 됐습니다.

예를 들어 유튜브 동영상을 입수하려면, http://drupal.org/project/media_youtube 같은 모듈을 별도로 설치/활성화해야 합니다.

이때 젠드 모듈도 필요로 하는 것 같아 메모해 둡니다.

1. http://framework.zend.com/download/gdata
에서 최신판 젠드 모듈을 다운로드 합니다.

2. 드루팔 sites/all/libraries 폴더에 1의 압축 해제 폴더 중 library/Zend를 업로드 합니다. 결과적으로 sites/all/libraries/Zend 폴더로 업로드 됩니다.

이렇게 하면 emfield의 업그레이드 후 관리자 설정화면에서 나오는 젠드 관련 경고가 사라집니다.

젠더 모듈 설치 이후에 아래와 같은 에러가 나타난다면,
Fatal error: Class 'Zend_Uri_Http' not found drupal 자세히 보기 »

View에서 FiveStar와 Voting API 연동해서 랭킹별 뷰 만들기

FiveStar로 평가된 노드들에 대해서 랭킹 뷰를 만들고자 한다.
그런데 뷰에 가 보아도 FiveStar 항목에 관한 필드나 필터가 보이지 않는다.

아래 동영상에서 힌트를 얻었는데,
View > Relationships에서 설문/투표 결과를 연동할 수 있게 돼 있었다!

Building Views with Fivestar and VotingAPI
http://www.lullabot.com/videos/building-views-fivestar-and-votingapi

절차는 다음과 같다.

1. 해당 뷰 설정 >> RelationShip에
Node: Vote results 를 추가한다.

Require this relationship 항목을 체크해 준다.
Value type:필터 없음
Vote tag:필터 없음
Aggregation function:평균vote
로 각각 지정할 것.

2. 이후 뷰 설정의 Add sort criteria에서
그룹으로 Vote results를 선택하고,
Vote results: 값을 desc로 지정하면 된다.

뷰 설정을 저장하는 것, 잊지 않아야 한다.

View 설정 화면의 Header / Footer의 입력형식을 바꾸지 못하는 경우

한 드루팔 사이트에서 뷰를 조정하다가 CSS 를 편하게 만지려고
뷰의 Header 설정 부분 Style 구문을 넣었다.

당연히 헤더의 입력 형식(Input Format)도 Filted HTML이 아닌
Full HTML 로 바꾸어야 바로 작동할 터이다.

어라, 그런데 입력 형식의 풀다운 메뉴 링크가 반응을 하지 않는다.

View 설정 화면의 Header / Footer의 입력형식을 바꾸지 못하는 경우가 발생한 것이다.

조사해 보니 모듈 설정에서 충돌이 난 듯 하다. 아래 주소에서 힌트를 얻었다.

http://drupal.org/node/418438
Input formats no longer showing up as options in Views 2

여러 가지 추측이 난무하는데, 대체적으로 비슷한 내용이었다.
어떤 모듈 내의 JQuery 기능이 입력 형식의 풀다운 메뉴와 충돌이 난다는 것이다.

그래서 관리 > 모듈 설정화면으로 가서 현재 활성화된 모듈 중에서
jqeury가 들어간 모듈들을 다 살펴보았다. 그리고 하나씩 해제해 가면서
위 문제가 해결되는 지 확인해 봤다. 그래도 잘 안됐다.

어떤 이가 Image Assist 모듈을 체크 해제하고서 해결했다고 하길래
우리도 Image Assist 모듈을 비활성화 시켰다.
마침 해당 사이트는 그 모듈이 불필요했는데 부지불식간에 활성화된 상태였나 보다.

문제는 바로 해결되고, 뷰의 헤더/풋터에서 입력 형식을 지정할 수 있었다.

---

문제해결은 했으나, 안타깝게도 깊이 파고 들 시간은 없어 자세히 보기 »

사이트 오프라인 상태에서 다시 관리자로 로그인하는 방법은?

드루팔의 관리 기능 중에, 사이트 정비(Maintenance) 페이지를 설정하는 화면이 있다.
admin » settings » site maintenance(admin/settings)

이 기능은 참으로 편리해서, 드루팔 사이트를 Offline 정비 모드로 설정하면
일반 사용자들은 사이트의 기능을 사용 못하고, 오프라인 정비 메시지를 보게 된다.
관리자는 기존의 웹페이지 환경을 그대로 이용할 수 있어 정비 작업이 원활하다.

그런데 이런. 어쩌다 오프라인 작업 중인 관리자용 웹브라우저를 확 닫아버렸다.
다시 들어갔더니 해당 드루팔 사이트의 로그인 세션이 사라졌다.
물론 관리자 권한은 온데간데 없고 일반 유저처럼 오프라인 메시지만 보인다.

이런 경우, 아래와 같은 웹 주소 입력을 하면 오프라인 사이트임에도 불구하고
다시 로그인 창이 뜬다. 관리자로 다시 아이디/패스워드를 입력하면
관리 화면을 접할 수 있다.

http://드루팔사이트/?q=user

촌각을 다투는 긴급 정비 상황이라면 이 주소 찾아내는 것도 힘들 것 같아 메모해 둔다.
팁 치고는 너무 간단.

참고 주소는,
http://drupal.org/node/56995
How to log in once you have turned your site off-line for maintenance

드루팔 보안 관련 설정 - 회원제 사이트가 아니면 계정 만들기 인터페이스를 보이지 않도록 하자.

드루팔 보안 관련 설정 - 회원제 사이트가 아니면 계정 만들기 인터페이스를 보이지 않도록 하자.

팁은 아니고, 그저 주의하자는 의미에서 기록해 둔다.
(드루팔을 설치해 보신 분들은 거의 다 아는 내용일 듯)

드루팔로 회원제 사이트를 꾸미는 경우에는 해당 사항 없다.

---

스패머들은 교묘하게 드루팔 회원 등록로 봇으로 하는 경우가 있다.
Captcha도 그냥 통과하거나 때로는 늦은 패치 탓에 세션공격 형태의 가입도 있었던 적이 있다.

봇으로 회원 등록을 하면 뭐가 좋은 지는 모르지만,
아무래도 익명보다는 권한이 많아지는 것은 사실이다.
컨텐츠를 작성할 수 있는 경우도 기본 설정에 의해 노출될 수 있다.
그래서 CCK나 노드관련 권한 설정들을 항상 잘 살펴야 하는데...

봇이 아닌 손수 회원가입해서 이것저것 테스트해 보는... 이도 있다.
화면 상에 있지 않는 링크를 입력해 보고, 쓰기 권한과 폼 등에 약점이 없는지 살피는 것으로 판단되면 아무래도 긴장된다.

드루팔은 오픈소스라서 강력한 보안패치가 돼 있는 점과 동시에 누구나 소스를 보는 상태이므로 양날의 검이다!
개인 블로그나 비회원제 사이트로 드루팔은 쓴다면... 굳이 가입 형태를 유지할 필요가 있을까. 댓글은 가입하지 않고도 쓸 수 있는 좋은 방법들이 많고.

그런데 드루팔은 기본 설치후에
회원제 사이트로 운영할 생각이 없는데도, 로그인 블럭에서 회원가입 링크가 보여서 신경쓰인다.
이런 경우에는,

관리 > 사용자 설정에 가면,
가입 방식에 관한 선택항목이 있다. 자세히 보기 »

에러 메시지 대응책 - warning: Invalid argument supplied for foreach() in *****/includes/menu.inc on line 258

타이틀이 좀 긴 편이다. 본문도 길다(마음이 급한 분은 마지막의 -결론-을 볼 것).

warning: Invalid argument supplied for foreach() in *****/includes/menu.inc on line 258
에러가 드루팔 사이트에 나타난다면 긴장하는 것이 좋다.

위 에러는 대체로 버전업이나 특정 모듈을 활성화했을 때 나타날 수 있는데,
기술적으로 말하면 원인은 배열로 리턴해야 하는 값을 그렇지 않게 한 경우이다.

일부 소스의 버그라고도 할 수 있고, 디비에 정보가 없는 경우에도
나타날 수 있으므로 소스의 버그라고 부르기 어려울 수도 있다.
하지만 되도록이면 (드루팔 모듈 개발자라면) 아래의 내용을 숙지하자.

'access arguments'가 들어가는 코딩을 한다면 반드시 배열화하는 것을 잊지 말자.

looks like hook_menu --> 'access arguments' is expecting an array...

replace this
'access arguments' => 'edit your mom',

with this:
'access arguments' => array('edit your mom')

* 참고 : http://drupal.org/node/272821#comment-2069112

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

각설하고 개발자가 아닌 운영자의 입장에서는 소스 고치기는 번거롭다.
(사실 소스의 어디에 저런 문제되는 부분이 있는가도 찾기 어렵다. 자세히 보기 »

path alias 를 사용할 때, 언어별 설정에 유의하자.

path alias 를 사용할 때, 언어별 설정에 유의하자.

[현상]
드루팔 사이트의 기본 언어를 영어(혹은 다른 언어)로 바꾸고 나서,
해당 사이트의 Top 페이지와 일부 Alias 페이지의 주소에서
Page Not Found 에러가 발생.

[원인]
드루팔의 Path Alias는 언어별로 다르게 지정 가능하다.
admin/build/path 에서 확인할 수 있는데,
기본적으로 한 노드에 대해 alias를 설정하면
당시에 기본으로 설정된 언어만 Path Alias가 정해진다.

* 만일 Site Information의 톱 주소를 패스 에일리어스로
지정해 두었다면, 이 또한 언어 변경시 영향을 받는다.

[해결]
관리자로 로그인, admin/build/path 에 가서
문제 페이지의 Path Alias 항목에 대해
특정 언어만이 아닌 All Languages 대응으로 설정한다.

[재발방지]
드루팔 사이트의 메인 언어를 바꿀 때는,
반드시 Path Alias 항목들도 재점검하자!

컨텐츠 타입 정보(혹은 CCK 설정)를 Export / Import 할 때, illegal choice detected on import 에러가 난다면.

컨텐츠 타입 정보(혹은 CCK 설정)를 Export / Import 할 때, illegal choice detected on import 에러가 난다면...

컨텐츠 타입 정보를 Export한 텍스트 파일 중에,

input_formats => '' 또는
input_formats => '0' 또는
weight => '' 부분을

다음과 같이 바꾸어서 Import 해 보라.

input_formats => '1' 또는
input_formats => '1' 또는
weight => '0' 과 같이 수정해서 Import.

* Import 에러 메시지가 제목의 에러 메시지와 "관리자에게 연락해 보세요"라고 너무 간단하게 나오는데, 이를 더 자세히 현상 확인하려면, Recent Logs 최근 로그에서 상세 에러 내용을 확인할 수 있다. 참고로 input_formats 관련된 임포터 에러는 feed_api 모듈의 CCK에서 자주 발생한다.

* 참고 :
http://drupal.org/search/apachesolr_search/illegal%20choice%20content%20...

구글 애드센스 블럭이 공백으로 보일 경우

Google의 AdSense를 드루팔 사이트에 적용하는 방법은 여럿 있지만,
드루지기가 가장 선호하는 방법은 블럭을 이용하는 것이다.
(유명한 모듈인 AdSense Injection은 기능초과에 복잡하다는 느낌)

그런데 어느 날 새로운 드루팔 사이트를 만들고
평소와 다름 없이 블럭에 애드센스 광고 태그를 삽입했는데...
보이지 않았다. 한참을 있어도 공백 상태로 안보였다. 간혹 에러 메시지도 나타났다.

며칠 동안 끙끙대다 찾은 해결책은 아주 간단한 것이었다.
[본문 입력 필터를 Full HTML이 아닌 PHP Filter로 설정]해 주었더니 괜찮아졌다.
보안상 좋지는 않지만... 예전에 종종 겪었을 문제인듯 한데 까먹었던 모양이다.

팁이라고 부르기도 쑥스럽지만,
행여 드루지기처럼 이런 간단한 망각으로 인해 며칠 간 고생하는 분을 위해 메모한다.

드루팔 성능/속도 올리기 제5탄 - CCK 컨텐츠 타입의 필드 설정시 문자열 길이는 반드시 제한을 두라!

드루팔 성능/속도 올리기 제5탄 - CCK 컨텐츠 타입의 필드 설정시 문자열 길이는 반드시 제한을 두라!

아주 중요한 팁이다.
드루팔의 컨텐츠 타입 지정시, 필드를 문자열로 한 경우
설정 화면에서

Size of textfield: 부분에만 문자열 길이를 지정하면 끝인 줄 알면 큰 오산이다!

보통 기본값이 60으로 돼 있는데 이를 그대로 저장하면,
MySQL의 경우 VARCHAR 타입이 아닌 LONGTEXT로 필드를 생성한다.
그냥 TEXT도 아니고 LONGTEXT이다!!!
http://dev.mysql.com/doc/refman/5.1/en/string-type-overview.html

이 필드들을 드루팔 View를 이용해서 정렬이나 검색을 한다고 생각하면,
끔직하다! 참으로 끔직하다! 게다가 인덱싱도 설정돼 있지 않은 상태이다.

고로 반드시 다음과 같이 CCK 컨텐츠 타입을 설정하다. *(필독! 필히 준수!)

컨텐츠 타입의 필드 설정에서 문자열인 경우에는,
Size of textfield: 부분 뿐만 아니라 설정화면 제일 아래에 있는
"최대 문자수" 부분을 확실하게 지정해야 한다.

예를 들어 "최대 문자수" 부분에 200을 지정/저장하면,
MySQL에는 LONGTEXT가 아닌 VARCHAR 200으로 정확히 지정된다.

이렇게 하지 않으면 해당 컨텐츠 타입 목록의 출력시 많이 느려질 것이다.

* 일단 LONGTEXT로 생성된 컨텐츠 타입 필드는 나중에 "최대 문자수"를 강제 지정해도 VARCHAR로 변하지 않는다. 자세히 보기 »

내용묶음