it-swarm-korea.com

template.php를 통해 jQuery 탭 추가

"template.php"파일에 jQuery 탭을 어떻게 추가합니까?
drupal_add_library('system', 'jQuery.tabs') 또는 drupal_add_js('/misc/ui/jquery.ui.tabs.min.js')로 추가하려고하는데 운이 없네요.

내 전체 스 니펫은 다음과 같습니다.

function custom_theme(&$existing, $type, $theme, $path) {
  $hooks = array(); 
  drupal_add_library('system', 'ui.tabs');
  // custom.js will call jQuery.tabs!
  drupal_add_js( path_to_theme() .'/js/custom.js', array('weight' => 9));

  return $hooks;
}
2
chrisjlee

hook_theme () 모듈 또는 테마에 의해 구현 된 테마 함수 목록을 반환해야하는 후크입니다.

drupal_add_library() 또는 drupal_add_js()hook_theme() 내에서 호출하는 것은 페이지에 JavaScript 파일을 추가하는 방법이 아닙니다.

Structure of the .info file 에서보고 된 것처럼 테마는 scripts 지시문을 사용하여 사용하는 JavaScript 파일을 선언 할 수 있습니다.

scripts[] = js/custom.js

또는 테마는 테마 함수 내에서 drupal_add_js()을 사용하거나 page.tpl.php 내부에있는 다음 스니핑을 사용하거나 대체 페이지 템플릿 Drupal이 사용합니다.

drupal_add_js($path_to_script);
$scripts = drupal_get_js();
2
kiamlaluno

구체적인 질문은 jQuery UI 탭 추가에 관한 것이라고 생각합니다. 또 다른 대답은 사용자 정의 자바 스크립트 파일을 추가하는 것입니다.

많은 페이지에 많은 탭이있을 때 hook_init () 를 사용하여 사용자 정의 모듈에서이 작업을 수행했습니다.

function mymodule_init(){
    drupal_add_library('system','ui.tabs');
}

주석에서이 질문은 특정 페이지 (또는 노드)에 대해이를 수행하는 방법을 묻습니다.

template_preprocess_page () 를 사용하여 template.php의 테마에서이 작업을 수행 할 수 있습니다.

function mytheme_preprocess_page(&$variables) {
    echo "<pre>"; print_r($variables['node']); echo "</pre>";   // great for debugging
    if ($variables['node']->nid == 3) drupal_add_library('system', 'ui.tabs');
}

위의 코드는 노드 3이 jQuery UI 탭이있는 대상 페이지라고 가정합니다.

캐시를 추가 한 후 플러시하는 것을 잊지 마십시오.

이제 라이브러리를로드했습니다. 다음 단계는 모듈/테마에 자바 스크립트 파일을 추가하는 것입니다. 이것은 mytheme/mymodule . info 파일에서 수행됩니다. 더하다

scripts[] = js/script.js

'js'폴더를 만들고 script.js를 만들고 다음 패턴을 따라 Drupal 사례를 따릅니다.

(function($, Drupal, window, document, undefined) {
    Drupal.behaviors.my_custom_behavior = {
        attach : function(context, settings) {
            // assuming your div is "tabs"
            jQuery("#tabs").tabs();
        }
    };
})(jQuery, Drupal, this, this.document);

따라서 단순성을 위해 노드 3 콘텐츠를 전체 HTML (또는이 예에서는 PHP))으로 설정하고 본문을 다음과 같이 설정할 수 있습니다. 그러면 다른 탭에 두 개의보기가 표시됩니다.

<div id="tabs">
<ul>
  <li><a href="#tabs-1">Stack Overflow</a></li>
  <li><a href="#tabs-2">Drupal StackExchange</a></li>
</ul>
  <div id="tabs-1">
    Let's show our View for Stack Overflow
    <?php echo views_embed_view('stackoverflow', 'machine_name_foo'); ?>
  </div>
  <div id="tabs-2">
    And for Drupal
    <?php echo views_embed_view('drupal_se', 'machine_name_bar'); ?>
  </div>
</div>
1
mikeDOTexe