본문 닫기 태그 바로 앞에 HTML을 어떻게 삽입합니까?


8

닫는 body 태그 앞에 임의의 HTML 내용을 페이지에 삽입하는 가장 좋은 방법을 찾고 drupal_add_js()있습니다. 페이지 하단에 JavaScript를 추가 하는 것과 비슷 합니다.

나는 Wordpress 배경에서 왔으며 Wordpress에서는 wp_footer()후크 를 사용하여이를 수행 할 수 있습니다 .

나는를 사용하여 조사 hook_page_alter()했지만 이것이 이것이 올바른 방법인지 또는이 작업을 수행하는 더 좋은 방법이 있는지 궁금합니다.


1
이와 비슷한 질문이 가끔 나타나고 항상 "body 태그 바로 앞에 HTML을 삽입해야"하는 이유 가 궁금 합니다. 당신이 잘못하고있는 일에 접근하고있는 것처럼 보입니다.
Letharion

1
다른 사람들이 왜 그것을하고 싶어하는지 말할 수는 없지만 제 경우에는 Underscore JS 템플릿을 페이지에 추가하여 필요한 블록이 필요합니다. 그러나 여러 블록이 하나의 템플릿을 사용할 수 있으므로 모든 템플릿을 페이지 하단에 추가하여 템플릿이로드되었는지 여부를 쉽게 확인할 수있었습니다. 나를 위해 그것은 기본적으로 미학 / 편의 일입니다.
drebabels

내가 느리면 미안하지만 나에게 이해가되지 않습니까? 양식보다 더 많이 사용될 수있는 #attached 의 캐시 / 집계 / 기타 이점으로 인해 그 이유를 여전히 이해할 수 없습니다.
Letharion

#attached의 다재다능 함을 알지 못 했으므로 소개해 주셔서 감사합니다. 그러나 제 경우에는 해당 템플릿 파일의 내용을 페이지에 작성하고 있습니다 (파일에 대한 링크뿐만 아니라). 잘못되면 정정하십시오. 실제 페이지 캐싱이이를 처리하기 때문입니다.
drebabels

답변:


23

동등한 hook_footer () 드루팔 6에서 사용한 구현하는 hook_page_build을 () , 및의 내용을 변경 $page['page_bottom']한 다음과 같은 코드를 사용 :

function mymodule_page_build(&$page) {
  $page['page_bottom']['devel'] = array(
    '#weight' => 25, 
    '#markup' => '<div style="clear:both;">' . devel_query_table() . '</div>',
  );
}

의 내용은 다음 코드를 사용하여 html.tpl.php 에서 $page['page_bottom']출력됩니다 .

  <?php print $page_top; ?>
  <?php print $page; ?>
  <?php print $page_bottom; ?>
</body>
</html>

의 값은 다음 코드를 사용하여 template_process_html ()$page_bottom 에서 초기화됩니다 .

  // Render page_top and page_bottom into top level variables.
  $variables['page_top'] = drupal_render($variables['page']['page_top']);
  $variables['page_bottom'] = drupal_render($variables['page']['page_bottom']);
  // Place the rendered HTML for the page body into a top level variable.
  $variables['page'] = $variables['page']['#children'];
  $variables['page_bottom'] .= drupal_get_js('footer');

차이 hook_page_alter ()hook_page_build()hook_page_alter()후에 실행 hook_page_build()및 변경 표기하거나 제거하는 동안 콘텐츠가 다른 모듈에 의해 추가 hook_page_build()하는 페이지에 새로운 컨텐츠를 추가하는 데 사용되어야한다.


이 답변을 넘어서서 감사합니다. 이것은 매우 도움이됩니다.
drebabels
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.