なぜなら 私はこのプロセスをすぐには得られませんでした。それを説明することにしました。誰かが助けてくれるかもしれません。
さらに面白くするために、ランダムに画像を表示するモジュールの作成について説明します。
挑戦する
タスクはまさに、Form APIを介してDrupalにファイルをアップロードする機能の実装です。 また、以下で説明する例は、この実装の例にすぎません。機能的
画像を追加または削除できる管理領域があります。 管理パネルからランダムに選択された画像を返す関数もあります。 すべてが非常に簡単です:)実装
まず、管理パネルで設定を使用してページを作成する必要があります。Copy Source | Copy HTML /** <br/> * Implementation of hook_menu(). <br/> */ function ivt_header_menu() { $items [ 'admin/settings/ivt_header_settings' ] = array ( 'title' => t( 'IVT Header Settings' ), 'page callback' => 'drupal_get_form' , 'page arguments' => array ( '_ivt_header_settings_form' ), 'access arguments' => array ( 'access administration pages' ), 'type' => MENU_NORMAL_ITEM, ); return $items ; }
Copy Source | Copy HTML /** <br/> * Implementation of hook_menu(). <br/> */ function ivt_header_menu() { $items [ 'admin/settings/ivt_header_settings' ] = array ( 'title' => t( 'IVT Header Settings' ), 'page callback' => 'drupal_get_form' , 'page arguments' => array ( '_ivt_header_settings_form' ), 'access arguments' => array ( 'access administration pages' ), 'type' => MENU_NORMAL_ITEM, ); return $items ; }
Copy Source | Copy HTML /** <br/> * Implementation of hook_menu(). <br/> */ function ivt_header_menu() { $items [ 'admin/settings/ivt_header_settings' ] = array ( 'title' => t( 'IVT Header Settings' ), 'page callback' => 'drupal_get_form' , 'page arguments' => array ( '_ivt_header_settings_form' ), 'access arguments' => array ( 'access administration pages' ), 'type' => MENU_NORMAL_ITEM, ); return $items ; }
Copy Source | Copy HTML /** <br/> * Implementation of hook_menu(). <br/> */ function ivt_header_menu() { $items [ 'admin/settings/ivt_header_settings' ] = array ( 'title' => t( 'IVT Header Settings' ), 'page callback' => 'drupal_get_form' , 'page arguments' => array ( '_ivt_header_settings_form' ), 'access arguments' => array ( 'access administration pages' ), 'type' => MENU_NORMAL_ITEM, ); return $items ; }
Copy Source | Copy HTML /** <br/> * Implementation of hook_menu(). <br/> */ function ivt_header_menu() { $items [ 'admin/settings/ivt_header_settings' ] = array ( 'title' => t( 'IVT Header Settings' ), 'page callback' => 'drupal_get_form' , 'page arguments' => array ( '_ivt_header_settings_form' ), 'access arguments' => array ( 'access administration pages' ), 'type' => MENU_NORMAL_ITEM, ); return $items ; }
Copy Source | Copy HTML /** <br/> * Implementation of hook_menu(). <br/> */ function ivt_header_menu() { $items [ 'admin/settings/ivt_header_settings' ] = array ( 'title' => t( 'IVT Header Settings' ), 'page callback' => 'drupal_get_form' , 'page arguments' => array ( '_ivt_header_settings_form' ), 'access arguments' => array ( 'access administration pages' ), 'type' => MENU_NORMAL_ITEM, ); return $items ; }
Copy Source | Copy HTML /** <br/> * Implementation of hook_menu(). <br/> */ function ivt_header_menu() { $items [ 'admin/settings/ivt_header_settings' ] = array ( 'title' => t( 'IVT Header Settings' ), 'page callback' => 'drupal_get_form' , 'page arguments' => array ( '_ivt_header_settings_form' ), 'access arguments' => array ( 'access administration pages' ), 'type' => MENU_NORMAL_ITEM, ); return $items ; }
Copy Source | Copy HTML /** <br/> * Implementation of hook_menu(). <br/> */ function ivt_header_menu() { $items [ 'admin/settings/ivt_header_settings' ] = array ( 'title' => t( 'IVT Header Settings' ), 'page callback' => 'drupal_get_form' , 'page arguments' => array ( '_ivt_header_settings_form' ), 'access arguments' => array ( 'access administration pages' ), 'type' => MENU_NORMAL_ITEM, ); return $items ; }
Copy Source | Copy HTML /** <br/> * Implementation of hook_menu(). <br/> */ function ivt_header_menu() { $items [ 'admin/settings/ivt_header_settings' ] = array ( 'title' => t( 'IVT Header Settings' ), 'page callback' => 'drupal_get_form' , 'page arguments' => array ( '_ivt_header_settings_form' ), 'access arguments' => array ( 'access administration pages' ), 'type' => MENU_NORMAL_ITEM, ); return $items ; }
Copy Source | Copy HTML /** <br/> * Implementation of hook_menu(). <br/> */ function ivt_header_menu() { $items [ 'admin/settings/ivt_header_settings' ] = array ( 'title' => t( 'IVT Header Settings' ), 'page callback' => 'drupal_get_form' , 'page arguments' => array ( '_ivt_header_settings_form' ), 'access arguments' => array ( 'access administration pages' ), 'type' => MENU_NORMAL_ITEM, ); return $items ; }
Copy Source | Copy HTML /** <br/> * Implementation of hook_menu(). <br/> */ function ivt_header_menu() { $items [ 'admin/settings/ivt_header_settings' ] = array ( 'title' => t( 'IVT Header Settings' ), 'page callback' => 'drupal_get_form' , 'page arguments' => array ( '_ivt_header_settings_form' ), 'access arguments' => array ( 'access administration pages' ), 'type' => MENU_NORMAL_ITEM, ); return $items ; }
Copy Source | Copy HTML /** <br/> * Implementation of hook_menu(). <br/> */ function ivt_header_menu() { $items [ 'admin/settings/ivt_header_settings' ] = array ( 'title' => t( 'IVT Header Settings' ), 'page callback' => 'drupal_get_form' , 'page arguments' => array ( '_ivt_header_settings_form' ), 'access arguments' => array ( 'access administration pages' ), 'type' => MENU_NORMAL_ITEM, ); return $items ; }
削除用にダウンロードしたファイルのリスト、ファイルをダウンロードするためのフィールド、およびボタンでフォーム自体を記述します。
Copy Source | Copy HTML
- function _ivt_header_settings_form(){
- $ form [ '#attributes' ] [ 'enctype' ] = 'multipart / form-data' ;
- $ form [ 'header_images_del' ] = array (
- '#type' => 'チェックボックス' 、
- '#title' => t( '画像の削除' )、
- '#options' => variable_get( 'ivt_header_images' 、 配列 ())、
- );
- $ form [ 'header_images_upload' ] = array (
- '#type' => 'file' 、
- '#title' => t( '新しい画像を添付' )、
- );
- $ form [ 'submit' ] = array (
- '#type' => 'submit' 、
- '#value' => t( 'Go!' )
- );
- $フォームを 返す ;
- }
次のようになります。
このフォームの検証ツールを作成し、そこで画像をサイトにアップロードします。
Copy Source | Copy HTML
- function _ivt_header_settings_form_validate( $ form 、& $ form_state ){
- if ( isset ( $ form [ 'header_images_upload' ])){
- //ファイル拡張子の検証
- $ validators = array ( 'file_validate_extensions' => array ( 'png' ));
- //ファイルがダウンロードされるフォルダー
- $ dir = file_directory_path()。 '/ヘッダー' ;
- //ディレクトリが存在するかどうかを確認します。 彼女がいない場合、彼女は作成されます
- if (file_check_directory( $ dir 、 1 )){
- //ファイルをロードします
- $ file = file_save_upload( 'header_images_upload' 、 $ validators 、 $ dir );
- //新しいファイルフィールドを$ form_stateに追加します
- if ( $ file ) $ form_state [ 'values' ] [ 'header_image_file' ] = $ file ;
- }
- }
- }
提出では、選択したファイルを削除し、新しいファイルを追加します。
Copy Source | Copy HTML
- function _ivt_header_settings_form_submit( $ form 、& $ form_state ){
- $ image_file = $ form_state [ 'values' ] [ 'header_image_file' ];
- $ images_del = $ form_state [ 'values' ] [ 'header_images_del' ];
- $ images_del = array_filter( $ images_del );
- //ダウンロード済みのファイルのリストを取得します
- $ header_images = variable_get( 'ivt_header_images' 、 array ());
- //アップロードするファイルを選択した場合
- if ( $ image_file ){
- //リストに追加します
- $ header_images [ $ image_file- > fid] = l( $ image_file- > filename、 $ image_file- > filepath);
- drupal_set_message(t( 'Image%filenameがアップロードされました!' 、 配列 ( '%filename' => $ image_file- > filename)));
- }
- //ファイルが送信中に削除された場合
- if ( $ images_del ){
- //すべてのファイルを調べます
- foreach ( $ images_del as $ fid ){
- //データベースからファイルをロードします
- $ sql_file = db_fetch_object(db_query( "SELECTファイルパス、ファイルFROMファイルWHERE fid = '%s'" 、 $ fid ));
- //データベースからファイルを削除します
- db_query( 'DELETE FROM {files} WHERE fid =%d' 、 $ fid );
- //ファイルを削除します
- file_delete( $ sql_file- > filepath);
- //リストからファイルを削除します
- 設定解除 ( $ header_images [ $ fid ]);
- drupal_set_message(t( 'Image%filenameが削除されました!' 、 配列 ( '%filename' => $ sql_file- > filename)));
- }
- }
- //リストを保存します
- variable_set( 'ivt_header_images' 、 $ header_images );
- }
リストから任意の画像を取得して返す関数を記述するだけです。
Copy Source | Copy HTML
- 関数 ivt_header_get_image( $ fid = null ){
- グローバル $ base_url ;
- //引数がない場合、任意に取得します
- if (! $ fid ){
- //リストをロードします
- $ header_images = variable_get( 'ivt_header_images' 、 array ());
- //ランダムを取る
- $ fid = array_rand( $ header_images );
- }
- //画像へのパスを取得します
- $ sql_file = db_fetch_object(db_query( "SELECTファイルパスFROMファイルWHERE fid = '%s'" 、 $ fid ));
- $ filepath = $ sql_file- > filepath;
- $ image_html = "<img src = '" 。 $ base_url 。 '/' $ filepath 。 「 '/>」 ;
- //画像を返します
- return $ header_images ? $ image_html : '' ;
- }
以上です。