drupal 모듈 작성시 유용한 각종 변수, 함수들
drupal에 특화된 모듈을 PHP 작성할 때,
아래와 같은 변수, 함수들을 알면 매우 유용하다.
1. 현재 로그인한 유저 정보를 확인할 때
global $user;
drupal_set_message( "<pre>".print_r( $user, true )."</pre>" );
* 참고로 현재 로그인한 유저의 롤은 $user->roles로 확인 가능하다.
2. 모듈의 상대 패스(드루팔 설치폴더 이하)를 알고 싶을 때
$module_path = drupal_get_path('module', '작성한 모듈명');
* 참고로 드루팔 모듈은 3군데 이상(modules, sites/사이트명/modules,
sites/all/modules, sites/default/modules )에 배치 가능하다.
그러다 보니 패스확인을 위해 위와 같은 drupal_get_path 함수가 필요하다.
* 그러므로 한 모듈 아래에 images 폴더가 있는 경우에는,
<img src='".$base_root."/".$module_path."/images/draggable-sample.png' align='absmiddle'/>
와 같이 하면 된다.
* 현재 돌고 있는 드루팔의 최상단 웹주소를 알려면, 다음과 같이 하라.
global $base_root, $base_url; // $base_url 은 settings.php 에 지정한 경우이다.
3. files이하의 특정 파일에 대한 uri을 얻는 경우에는 아래를 참고.
http://api.drupal.org/api/drupal/includes--file.inc/function/file_direct...
예를 들어, files폴더 아래에 있는 imagecache 폴더의 uri를 얻으려는 경우에는,
$strPrefix = "/".$base_url.file_directory_path()."/imagecache/";
처럼 변수를 지정하면 되겠다.
- Login to post comments
댓글
drupal_get_path에 관한 드루팔API는
drupal_get_path에 관한 드루팔API는 아래 주소에서 참고.
http://api.drupal.org/api/drupal/includes--common.inc/function/drupal_get_path/6
files이하의 특정 파일에 대한 uri을 얻는 경우에는 아래를 참고.
http://api.drupal.org/api/drupal/includes--file.inc/function/file_directory_path/6
http://stackoverflow.com/questions/3519843/how-to-get-absolute-path-for-a-image-in-drupal
서버간 Sync에 관한
서버간 Sync에 관한 모듈 예제가 본 기사의 첨부에 들어있다.
드루팔6에서
드루팔6에서 사용하는 DB 조회 관련 API를 모아둔 곳도 있다.
http://api.drupal.org/api/group/database/6
아래 주소에는,
아래 주소에는, 드루팔6에서 사용하는 Global 변수에 관한 설명이 모여있다.
http://api.drupal.org/api/file/developer/globals.php/6
$user->roles 에 관한
$user->roles 에 관한 좋은 예제가 아래 주소에 있다.
http://www.bywombats.com/blog/ryan/10-25-2007/checking-if-drupal-user-ha...
참고 1 - 관리자 권한을 체크하는 예제
<?php
// Check to see if $user has the administrator role.
global $user;
if (in_array('administrator', array_values($user->roles))) {
// Do something.
}
?>
참고 2 - 익명 권한을 체크하는 예제
<?php
// Check to see if $user has the administrator role.
global $user;
if (in_array('anonymous user', array_values($user->roles))) {
// Do something.
}
?>
* 언제나 주의)
global $user; 를 미리 해 주어야만 $user->roles 가 제대로 작동한다.
참고로 현재 로그인 사용자 어카운드명은 $user->name 이다.
마지막 부분에 있는
마지막 부분에 있는 $GLOBALS['base_path'] 는
default.settings.php 에 설정하지 않으면 작동하지 않는 듯 하다.
참고로 drupal_get_path 함수에 관한 더 상세한 설명이 있는 주소를 적어둔다.
http://tgaconnect.com/drupaldox/html/da/d5e/common_8inc_e3bbe8f97bf07bb0...