2011-08-25 7 views
0

나는 드루팔 (Drupal) 방식을 이해하려고 악몽을 꾸고있다! 나는 여기서 예를 들고 누군가 내게 내 결과를 성취 할 수있는 올바른 방법을 보여 줄 수 있다면 그것이 내가 이해하기위한 문을 여는 것을 도울 것이라고 기대하고있다.Drupal 7, 주제에 관한 일반적인 질문

그래서 노드 생성 날짜를 스택 오버플로 형식과 비슷하게 변경하려고합니다. E.G. 이것은 "게시 x 시간 전"또는 "8 월 17 일 12:22에 게시 됨"입니다.

"node.tpl.php"파일을 사용하여 desiered 효과를 만들었습니다. "$ created"노드 변수와 다음 코드를 사용하여이 작업을 수행했습니다.

$showCreate = round((time() - $created)/60); 
if ($showCreate < 60) { 
    $showCreate = $showCreate . "mins ago." ; 
} else { 
    $showCreate = round($showCreate/60); 
    if ($showCreate > 24) {  
     $createMonth = format_date($created, 'custom', 'M'); 
     $createDate = format_date($created, 'custom', 'd'); 
     $createTime = format_date($created, 'custom', 'H:i'); 
     switch ($createDate) { 
      case 1: 
      case 21: 
      case 31: 
       $createDate = $createDate . "st"; 
       break; 
      case 2: 
      case 22: 
       $createDate = $createDate . "nd"; 
       break; 
      case 3: 
      case 23: 
       $createDate = $createDate . "rd"; 
       break; 
      default: 
       $createDate = $createDate . "th"; 
       break; 
     } 
     $showCreate = $createMonth . " " . $createDate . " at " . $createTime; 
    } else { 
     $showCreate = $showCreate . "hrs ago." ;  
    } 
} 

이렇게하려면 '올바른 방법'입니까? 또는 후크 및 사전 처리 기능 중 일부를 사용 하시겠습니까? 나는 이것을 다른 모듈로 직접 적용 할 수 있도록 이것을 MOdule으로 마무리하고 싶다.

미리 감사드립니다.

답변

1

드루팔 (Drupal 7)에서이 작업을 수행하는 방법은 아주 간단합니다. 귀하가하는 일에 따라 달라집니다.

모듈을 작성하는 경우 hook_node_view을 사용하여 렌더링 된 내용을 변경하려고합니다. 이 같은

function hook_node_view($node, $view_mode, $langcode) { 
    $node->content['my_additional_field'] = array(
    '#markup' => $additional_field, 
    '#weight' => 10, 
    '#theme' => 'mymodule_my_additional_field', 
); 
} 

당신이 당신의 테마의 template.php 파일에 hook_preprocess_node을 사용하려면 다음 테마를 작성하는 경우, 뭔가 :

function mytheme_preprocess_node(&$vars) { 
    $node = $vars['node']; 

    $vars['my_created_date'] = my_date_extraction_function($node->created); 
} 

위의 페이지에서 몇 가지 예제 코드

node.tpl.php에서 $ my_created_date 변수를 사용할 수 있습니다.이 변수는 원래 만든 날짜 대신 사용할 수 있습니다.

분명히 여기서 상상력을 사용할 수 있습니다. $ vars 배열에 추가하는 것은 node.tpl.php에서 사용할 수 있고 mytheme_preprocess_node()에서는 노드 객체에 대한 모든 권한을 가질 수 있습니다.

학습 곡선이 적기 때문에 hook_node_view 또는 렌더링 API를 사용하지 않은 경우 preprocess_node 메소드를 사용하는 것이 더 쉽습니다.

희망이 있습니다.

+0

정말 고맙습니다. 다음 주까지는 그 기회를 잡을 기회가 없지만 시험에 열중하고 있습니다. 건배. – Purplemonkey

+0

안녕하세요, 전처리 방법을 시도해 보았습니다. 조언 해주셔서 감사합니다. 후크 노드를 나중에 떠날 것입니다. 감사 – Purplemonkey