2013-05-28 3 views

답변

0

hook_views_api()을 지정해야합니다. 그렇지 않으면이 훅이 작동하지 않습니다.

는하지만 당신은 당신은 당신이 모듈에 포함 할 뷰를 생성, Views에서 hook_views_default_views()

를 통해이 작업을 수행. 그럼 당신은 기능 hook_views_default_views()를 사용하고과 같이 (뷰에서) 수출 코드를 첨부 :

function yourmodulename_views_default_views() { 
    // Begin copy and paste of output from the Export tab of a view. 
    $view = new view; 
    // ..yadda yadda yadda 

    // Add view to list of views to provide. 
    $views[$view->name] = $view; 

    // Begin copy and paste of output for another view 
    $view = new view; 
    // ..yadda yadda yadda 

    // Add view to list of views to provide. 
    $views[$view->name] = $view; 

    return $views 
} 

반환 $ 뷰를 함수의 끝에서 당신을 위해 모든 뷰를 반환합니다.

+0

고마워요. 하지만 뷰 코드를 작성하고 내보내기는하지 않았습니다. 참조 용으로 내 코드를 추가했습니다. – tina

+0

죄송합니다, 일반적으로 코드를 먼저 내 보낸 다음 모듈에 배치합니다.하지만 처음부터 작성하는 것 같습니다. 처음부터 작성하는 특별한 이유가 있습니까? – inertialmedia

+0

아무도 도와 줄 수 있습니까? – tina

1

이 주제는 수년 동안 휴면 상태 였지만 적절한 대답이 없었습니다. 그래서 날 허용해라.

위의 문제는보기가 동일한 파일에 나열되어 있다는 것을 지저분하고 조직화되지 않은 것입니다. 아래는 일을하는보다 적절하고 직접적인 방법입니다.

먼저 모듈 디렉토리에 폴더를 만들 것을 권장합니다 (예 : "YOUR_MODULE/views /").

각보기를 가져 오려면 "my_view.inc"과 같은 새 파일을 만들고 하나의 파일을 하나의보기로 만듭니다. 나중에 변경해야하는 경우 원하는보기를 쉽게 찾을 수 있습니다.

그런 다음 가져 오기에 사용할 API를 선언하는 것입니다.

/** 
* Implements hook_views_api(). 
*/ 
function YOUR_MODULE_views_api() { 
    return array(
    'api' => '3.0', 
); 
} 

api 버전을 선언했으면 다음이 필요합니다. 이것은 무엇을

/** 
* Implements hook_views_default_views(). 
*/  
function YOUR_MODULE_views_default_views() { 
    $views = array(); 
    $path = drupal_get_path('module', 'YOUR_MODULE') . '/views/*.inc'; 

    foreach(glob($path) as $file) { 
    require_once $file; 
    $views[$view->name] = $view; 
    unset($view); 
    } 

    return $views; 
} 

는 하위 디렉토리 내부의 모든 "my_view.inc"파일을 찾을하고 캐시 지우기 후에 자동으로 그들 모두를로드 할 것이다.

희망이 있다면 여전히 도움이 될 것입니다.

관련 문제