Drupal 모듈 작성 시 유용한 코드

로그인 정보 유지

global $user; 
drupal_set_message( "<pre>".print_r( $user, true )."</pre>" );

현재 로그인한 유저의 롤은 $user->roles로 확인 가능하다.

모듈의 상대 경로를 알고 싶을 때

$module_path = drupal_get_path('module', '작성한 모듈명');
...
 <img src='".$base_root."/".$module_path."/images/draggable-sample.png' align='absmiddle'/>

가장 상단의 경로

global $base_root, $base_url; // $base_url 은 settings.php 에 지정한 경우

관리자 권한 체크

<?php

  global $user;

// Check to see if $user has the administrator role.
  if (in_array('administrator', array_values($user->roles))) {
    // Do something.
  }

익명 권한 체크

// Check to see if $user has the administrator role.
  if (in_array('anonymous user', array_values($user->roles))) {
    // Do something.
  }

 

node.tpl.php에 region 만들기

page.tpl.php에 region을 만드는 방법과 node.tpl.php에 region을 만드는 방법은 다르다. node.tpl.php에 region을 만드는 방법은 다음과 같다. 

template.php

function theme-name_preprocess_node( &$vars ) {
  if ( $blocks = block_get_blocks_by_region( 'region-name' ) ) {
    $vars[ 'name-you-want' ] = $blocks;
  }
}

node.tpl.php

node.tpl.php에서 원하는 위치에 다음과 코드를 추가한다.

<?php print render( $name-you-want ); ?>

 

theming 하기

CSS 제거하는 방법

드루팔 시스템이나 모듈에서 사용하는 CSS를 제거하려면 template.php 파일에 코드를 추가하면 된다. 예를 들어 메뉴와 관련된 CSS를 제거하려면 다음과 같은 코드를 추가한다.

function themename_css_alter( &$css ) {
  unset( $css[ drupal_get_path('module', 'system') . '/system.menus.css' ] );
}

그러나, View나 몇가지 contributed 모듈로 기본 CSS를 제거하고 대체할 수 있다. 

테마 옵션 만드는 방법

theme-settings.php 에 필요한 셋팅들을 정의한다. 

<?php
  function themename_form_system_theme_settings_alter( &$form, $form_state ) {
    $form[ 'jb_settings' ] = array(
      '#type'           => 'fieldset',
      '#title'          => t( 'SNS Settings' ),
      '#collapsible'    => false,
      '#collapsed'      => false,
    );
    $form[ 'jb_settings' ][ 'jb_facebook_url' ] = array(
      '#type'           => 'textfield',
      '#title'          => t( 'Facebook URL' ),
      '#default_value'  => theme_get_setting( 'jb_facebook_url' ),
    );
    $form[ 'jb_settings' ][ 'jb_google_plus_url' ] = array(
      '#type'           => 'textfield',
      '#title'          => t( 'Google Plus URL' ),
      '#default_value'  => theme_get_setting( 'jb_google_plus_url' ),
    );
    $form[ 'jb_settings' ][ 'jb_color' ] = array(
      '#type'           => 'select',
      '#title'          => t( 'Choose Color' ),
      '#options'        => array( 0 => t( 'Black' ), 1 => t( 'Blue' ), 2 => t( 'Red' ) ),
      '#default_value'  => theme_get_setting( 'jb_color' ),
    );
  }
?>

기본값은 info 파일에 둔다. 예를 들어 jb_color의 기본값을 0으로 하려면

settings[jb_color] = 0

을 추가한다. 

 

 

 

 

 

youngdeok's picture

Language

Get in touch with us

"If you would thoroughly know anything, teach it to other."
- Tryon Edwards -