뷰에서 테이블을 생성하기 위해 실행중인 쿼리를 수정하고 싶지만 사용하기 쉽도록 유지하는 데 어려움을 겪고 있습니다. 테이블에 사용자를 나열하고 테이블을 만들기 위해 쿼리를 수정하려고하는 일반 뷰는 두 개의 열을가집니다. Drupal 쿼리에 대한 설명서를보고 튜토리얼을 찾고 다른 사람들이 Drupal 및 Views에서 쿼리를 수정 한 방법에 대한 블로그 게시물을 살펴 봤지만 지금까지 아무 것도 작업하지 않았거나이 작업을 단순하게 수행하는 방법을 보여주었습니다. 그들이 결과가 없었던 다음에 간단한 쿼리 문을 만들려고했습니다.모듈을 사용하여 Drupal 7.x에서 뷰의 출력을 수정하는 방법
저는 주로 hook_views_pre_execute()
을 사용해 보았지만 시도해 보았습니다.
<?php
/**
* Implements hook_views_query_alter().
*/
// This function is called right before the execute process.
function my_module_views_pre_execute(&$view) {
if ($view->name == 'page' && $view->current_display == 'page') { //checks name of the view and what type it is
drupal_set_message("I can make changes to the view here.."); //diagnostic information, shows we can make changes to that view
$query =db_select('node','n')//select base table, alias is n.
->fields('n',array('nid', 'title', 'created', 'uid')); //adding fields nid, title, created, uid.
dpm($query->execute()->fetchAll()); // diagnostic information, shows whats being returned by the query
$query->execute()->fetchAll();
$view->build_info['query'] = $query;
}
}
내가 drupal_set_message("I can make changes to the view here..");
과 함께보기에 메시지를 만들 수 있어요, 그리고 뷰 설정 탭에서 내가 그의 출력 'SQL 쿼리보기'활성화 :이 내 코드가 순간에 모습입니다 내 모듈/코드 (뷰에 의해 생성 된 테이블과 일치하지 않음)의 쿼리입니다.
그럼 왜 테이블 출력에 전혀 영향을 미치지 않습니까? 보기를 표시하기 위해 실행중인 쿼리를 수정하려면 어떻게해야합니까 (이는 'Show the SQL query'출력과는 분명히 다릅니다)?
감사합니다. views_query_alter 함수를 변경했지만 새로운 문제는 view가 함수를 성공적으로 읽고 drupal set 메시지를 반환하지만 함수가 쿼리와 테이블에 변경 내용을 적용하지 않는다는 것입니다. views_pre_execute 함수와 비교하여 쿼리를 성공적으로 변경하지만 테이블에 일부 변경 내용이 적용되지 않습니다. 예를 들어, views_pre_execute 함수를 사용하여 첫 번째 열의 내용을 변경할 수 있습니다. 그러나 내 코드에서 필드를 추가하더라도 함수에서 새 열을 추가 할 수 없습니다. –