it-swarm-ko.tech

뷰에 고유 한 JavaScript를 어떻게 추가합니까?

내 사이트에서 특정 클래스 이름을 가진 뷰가 있습니다. 테마의 template.php 파일에서 요청한 페이지에서 특정 클래스 이름을 가진 뷰를 사용할 수 있는지 어떻게 알 수 있는지 알고 싶습니다.

페이지에서 특정 클래스 이름 (예 : 이미지 갤러리)이있는 뷰가 사용될 때 특정 JavaScript 및 CSS를 포함해야하기 때문에 이것은 매우 중요합니다.

29
Mehrdad201

이를 위해 template_preprocess_views_view() 훅을 사용할 수 있습니다 :

function THEME_preprocess_views_view(&$vars) {
  $view = &$vars['view'];
  // Make sure it's the correct view
  if ($view->name == 'your-view-name') {
    // add needed javascript
    drupal_add_js(drupal_get_path('theme', 'your-theme') . '/your-js.js');
    // add needed stylesheet
    drupal_add_css(drupal_get_path('theme', 'your-theme') . '/your-css.css');
  }
}

다음을 사용하여보기의 특정 표시를 확인할 수도 있습니다.

if ($view->name == 'your-view-name' && $view->current_display == 'your-display-id') {
  // include javascript & css here
}

다음과 같이 사용자 정의 CSS 클래스를 확인할 수 있어야합니다.

if ($view->name == 'your-view-name' && $view->display[$view->current_display]->display_options['css_class'] == 'your-css-class') {
   // include javascript & css here
}
42
Cyclonecode

Views_get_page_view 함수를 사용하여 페이지에서 제공되는보기를 찾을 수 있습니다. 뷰 객체를 반환합니다. 아래의 코드 스 니펫에서는 뷰 머신에서 읽을 수있는 이름과 비교해야하지만 물론 views_get_page_view에 의해 반환 된 뷰 객체를 기반으로 자체 비교를 작성할 수 있습니다

function YOURTHEMENAME_preprocess_page(&$variables) {
    $view = views_get_page_view();
    if($view->name == 'YOURVIEW') {
    //Do what ever you want 
    }
8
Alex Petrov

이 질문에 대해 다른 사람에게 도움이되는 경우를 대비하여 JavaScript를 Drupal View D7 & Views 3.7과 관련하여 다음이 가장 효과적이었습니다.

function HOOK_views_pre_render ( &$view ) { 
  /// check to make sure the view has a classname
  if ( $view->display_handler && !empty($view->display_handler->options['css_class']) ) {
    $cln = $view->display_handler->options['css_class'];
    $cls = 'CLASS GOES HERE';
    /// test that the classname contains our class
    if ( preg_match('/(^|\s+)' . preg_quote($cls) . '(\s+|$)/i', $cln) ) {
      /// build the path to the js, which is local to my module, js/view.js
      $sep = DIRECTORY_SEPARATOR;
      $dir = rtrim(drupal_get_path('module', 'HOOK'), $sep);
      $pth = "{$dir}{$sep}js{$sep}view.js";
      drupal_add_js($pth);
    }
  }
}

JavaScript가 가져온 개선 사항은 시각적 모양과 관련이 없기 때문에 테마가 아닌 모듈 내에 코드를 유지하려고했기 때문에이 기능이 유용했습니다.

NOTE : 분명히 HOOK는 두 위치 모두에서 모듈 이름으로 바꾸고 CLASS GOES HERE는 검색중인 클래스로 바꿔야합니다.

6
Pebbl

drupal 6 또는 7) 인 경우 모듈 컨텍스트 추가 자산과 함께 자바 스크립트 자산을 포함 할 수도 있습니다. 컨텍스트가 필요하지만 컨텍스트가 필요할 때 항상 포함되도록 안심하십시오 뷰가 렌더링되고 있습니다.

https://drupal.org/project/context_addassets

모듈의 프로젝트 페이지에서 :

특정 뷰 또는 블록이 렌더링 될 때 자바 스크립트 또는 CSS를 포함하고 싶습니까? 아니면 코드를 작성하지 않고도 첫 페이지에 자바 스크립트 또는 CSS를 포함하고 싶습니까?

컨텍스트 추가 자산을 사용하면이 작업을 수행 할 수 있습니다. UI를 사용하여 코드를 작성하지 않고도이 모든 작업을 수행 할 수 있습니다. ctools를 사용하기 때문에이 모든 것도 내보낼 수 있습니다.

4
chrisjlee

JQuery의 hasClass () 를 사용하여보기에서 특정 클래스를 검색하는 JavaScript 코드를 작성하고 조건이 충족되면 JavaScript 파일을 포함하십시오.

또 다른 방법은 뷰용 템플릿을 넣고 drupal_add_js () 를 사용하여 해당 템플릿을 통해 JavaScript 코드를 추가하는 것입니다.

2
niksmac