2011-11-24 1 views
1

나는 대학생을위한 Drupal 7 기반 웹 사이트를 관리합니다. 그것의 대부분은 표준 정적 페이지입니다. 매년 우리는 방을 선택하는 사람들을위한 방 투표를 진행하며이 과정은 현재 방의 할당량 (실시간)과 다른 방의 종류에 대한 위키 스타일 정보를 표시하는 응용 프로그램이 필요합니다.HTML5 응용 프로그램을 Drupal 모듈로 제공

HTML, 자바 스크립트 및 CSS의 정적 페이지를 제공 할 수 있어야합니다. 테마 모듈을 우회합니다. 응용 프로그램의 루트 역할을하는 HTML 페이지에서 상대 주소 지정이 필요합니다 (예 : "javascript/app.js"가 모듈 내에서 해당 파일을 선택해야 함). 그런 다음 권한 및 데이터베이스 액세스 등 모든 drupal API를 사용하여 PHP에서 JSON 데이터를 제공해야합니다.

나는 HTML, 자바 스크립트 등에서 약간의 경험이 있고 PHP에서는 약간의 경험이 있지만 상당히 새로운 편입니다. Drupal 모듈 개발.

답변

2

맞춤 모듈을 제안서로 만들고 HTML5 애플리케이션을 모듈의 하위 폴더에 별도로 배치해야합니다. 액세스 할 때 일반적으로 예상하는 것과 같은 상대 경로를 사용하므로 파일이 HTML5 앱 폴더 아래의 경로에있는 경우 javascript/app.js이 작동합니다. JSON 데이터 사용자 정의 모듈에

는 다음과 같이 표시됩니다

function mymodule_menu() { 
    $items['my/app/data'] = array(
    'page callback' => 'mymodule_ajax_callback', 
    'access callback' => TRUE, 
    'type' => MENU_CALLBACK 
); 

    return $items; 
} 

function mymodule_ajax_callback() { 
    $type = $_POST['type']; 

    $nodes = db_query("SELECT nid, title FROM {node} WHERE type = :type", array(':type' => $type))->fetchAllKeyed(); 

    drupal_json_output($nodes); 

    drupal_exit(); 
} 

그 코드는 페이지 콜백의로 mymodule_ajax_callback()를 사용 mp/app/data에서 (hook_menu() 사용) 메뉴 경로를 정의합니다.

mymodule_ajax_callback() 단순히 AJAX $_POST에 전달 된 type 매개 변수와 일치하고 (당신이 /my/app/path를 요청할 때 다음 AJAX 응답으로 반환됩니다) 페이지에 JSON 문자열에 자신의 ID와 제목을 출력 데이터베이스에서 모든 노드를 잡고 .

도움이 되길 바랍니다.

+0

감사합니다. 유용한 정보가 있습니다. index.html 페이지는 어떻게 제공됩니까? 나는 그것을 얻기 위해 domain.com/Sites/All/Modules/RoomBallot/에 가고 싶지 않습니다. 어떻게하면 domain.com/RoomBallot/에 나타나게 할 수 있습니까? javascript/app.js 형식의 URL을 가지고 있거나 또는 /javascript/app.js 형식이어야합니다. – ForbesLindesay

+0

그것에 대해 생각하면 아무런 차이가 없습니다. HTML5 앱을 어디에 둘까요? 당신의 모듈이 JSON 메뉴 경로 ('my/app/data')를 정의 할 때 이것은 당신이 평소와 같이 제안하는 폴더의 JS로부터 호출 될 수 있습니다 ('$ .ajax ({ 'url': '/ my/app/data '});'). javascript/app.js 경로에 관한 한, Drupal은 이미 존재하는 모든 경로/파일을 방해하지 않으므로 사이트 루트가 아닌 HTML 응용 프로그램 루트를 기준으로 경로를 호출하는 것이 좋습니다. – Clive

+0

예, 모든 것을 모듈 안에 넣고 싶습니다. 그래도 그 폴더에 있습니다. 그런 식으로 모든 사용자 정의 코드가 사이트 디렉토리에 있기 때문에 Drupal을 업데이트하는 것이 더 쉽습니다. 나는'/ RoomBallot/{FolderName}/{FileName} .php'에 대한 요청을 처리하기 위해 Drupal 함수를 작성한 다음 파일을 읽고 그것을 반환 할 것이라고 생각합니다. – ForbesLindesay

관련 문제