it-swarm-ko.tech

hook_preprocess_page () : 조회 페이지를 알려주는 방법?

뷰 페이지에만 일부 자바 스크립트 및 CSS 파일을 삽입 해야하는 사용자 정의 모듈을 작성 중입니다.

Hook_preprocess_page를 사용하고 있지만 현재 페이지가 뷰에 있는지 알 수 없습니다.

function mymodule_preprocess_page(&vars)
{
    var_dump($vars); //output: nothings that reference the views!
    if([view page])
    {
        drupal_add_js([...]);
        drupal_add_css([...]);
        // Rebuild scripts 
        $scripts = drupal_get_js();
        $vars['scripts'] = $scripts;
        // Same for css
    }
}

템플릿 파일 (page-my_view_page_path.tpl.php)을 사용할 수 있다는 것을 알고 있지만 모듈이 활성화 된 경우에만 js 및 추가 CSS를 포함해야합니다. 그래서 나는 이것을 모듈 코드 안에 직접 보관하고 싶다.

아이디어?

10
Strae

views_get_page_view() 현재 사용중인 페이지보기가 무엇인지 찾습니다. NULL을 반환하면 현재 페이지는 뷰의 페이지가 아닙니다.

그러나 변수 $script$style 변수가 이미 설정되어 있으므로 drupal_add_js()에서 drupal_add_css()hook_preprocess_page()를 사용하면 예상대로 작동하지 않습니다. template_preprocess_page() . Views의 템플릿 전처리 (Jeremy French의 답변 참조)는 CSS와 JavaScript를 추가하기에 더 좋은 곳일 것입니다.

12
Pierre Buyle

여기에는 보기에 대한 전 처리기 에 긴 스레드가 있습니다. 이 코멘트 나에게는 매우 단순 해 보인다.

function mymodule_theme_registry_alter(&$theme_registry) {
  //dpm($theme_registry);
  $theme_registry['views_view__YOUR_VIEW_NAME_HERE']['preprocess functions'][] = 'mymodule_preprocess_func';
}

// now go on and play with your new preprocess function
function mymodule_preprocess_func(&$vars) {
  // etc
}
11
Jeremy French

Hook_preprocess_page () 인 경우 정의에 따라보기에는 페이지 표시와 메뉴 경로가 있으며 고유해야합니다. 따라서 다음을 수행 할 수 있습니다.

function mymodule_preprocess_page(&vars)
{
    var_dump($vars); //output: nothings that reference the views!
    if($_GET['q'] == 'my/view/path')
    {
        drupal_add_js([...]);
        drupal_add_css([...]);
    }
}

이 페이지에 인수가 전달되면 $_GET['q']의 일부가 필요하므로 Drupal의 arg() 함수를 사용하십시오.

if(arg(0) == 'my' && arg(1) == 'view' && arg(2) == 'path')

http://api.drupal.org/api/drupal/includes--bootstrap.inc/function/arg

8
Greg

나를 위해 이것은 작동합니다.

function MYMODULE_preprocess_page(&$vars) {
  $view = (array)views_get_page_view();
  if (!empty($view)) {
    // do stuff
  }
}
3
leymannx

특정 콜백에 JS 또는 CSS를 추가하는 경우 hook_page_build() 을 사용하는 것이 좋습니다.

2
Simon Poulston