Ubercartの写真付き商品をインポートする

Ubercartは、オンラインストアとCMS Drupalを完全に統合するオープンソースソフトウェアモジュールです。 Ubercartは、世界最高のeコマースソリューションの1つと考えられています。



原則として、多くの質問は写真付き商品の大量輸入によって引き起こされます。

私の場合、商品とその属性(名前、説明、価格、著者、写真へのリンクなど)のリストを含むExcelファイルがありました。

純粋な形式のExcelファイルは、インポート用のフィードが非常に難しいため、* .csvファイルとして保存しました。

私は今それで次に何をすべきかを説明します:)



node_importモジュールを使用して、アドインモジュールを作成しました。



アドインモジュールで、フックhook_node_import_fields()を追加し、追加のフィールドを担当します。

Copy Source | Copy HTML function my_module_node_import_fields( $type ) { if (_uc_product_node_import_is_product( $type )) { $fields = array ( 'my_field_0' => 'MY FIELD 0' , 'my_field_1' => 'MY FIELD 1' , ... 'my_field_n' => 'MY FIELD N' , 'my_image_filepath' => 'MY Image filepath' , ); return $fields ; }



  1. Copy Source | Copy HTML function my_module_node_import_fields( $type ) { if (_uc_product_node_import_is_product( $type )) { $fields = array ( 'my_field_0' => 'MY FIELD 0' , 'my_field_1' => 'MY FIELD 1' , ... 'my_field_n' => 'MY FIELD N' , 'my_image_filepath' => 'MY Image filepath' , ); return $fields ; }



  2. Copy Source | Copy HTML function my_module_node_import_fields( $type ) { if (_uc_product_node_import_is_product( $type )) { $fields = array ( 'my_field_0' => 'MY FIELD 0' , 'my_field_1' => 'MY FIELD 1' , ... 'my_field_n' => 'MY FIELD N' , 'my_image_filepath' => 'MY Image filepath' , ); return $fields ; }



  3. Copy Source | Copy HTML function my_module_node_import_fields( $type ) { if (_uc_product_node_import_is_product( $type )) { $fields = array ( 'my_field_0' => 'MY FIELD 0' , 'my_field_1' => 'MY FIELD 1' , ... 'my_field_n' => 'MY FIELD N' , 'my_image_filepath' => 'MY Image filepath' , ); return $fields ; }



  4. Copy Source | Copy HTML function my_module_node_import_fields( $type ) { if (_uc_product_node_import_is_product( $type )) { $fields = array ( 'my_field_0' => 'MY FIELD 0' , 'my_field_1' => 'MY FIELD 1' , ... 'my_field_n' => 'MY FIELD N' , 'my_image_filepath' => 'MY Image filepath' , ); return $fields ; }



  5. Copy Source | Copy HTML function my_module_node_import_fields( $type ) { if (_uc_product_node_import_is_product( $type )) { $fields = array ( 'my_field_0' => 'MY FIELD 0' , 'my_field_1' => 'MY FIELD 1' , ... 'my_field_n' => 'MY FIELD N' , 'my_image_filepath' => 'MY Image filepath' , ); return $fields ; }



  6. Copy Source | Copy HTML function my_module_node_import_fields( $type ) { if (_uc_product_node_import_is_product( $type )) { $fields = array ( 'my_field_0' => 'MY FIELD 0' , 'my_field_1' => 'MY FIELD 1' , ... 'my_field_n' => 'MY FIELD N' , 'my_image_filepath' => 'MY Image filepath' , ); return $fields ; }



  7. Copy Source | Copy HTML function my_module_node_import_fields( $type ) { if (_uc_product_node_import_is_product( $type )) { $fields = array ( 'my_field_0' => 'MY FIELD 0' , 'my_field_1' => 'MY FIELD 1' , ... 'my_field_n' => 'MY FIELD N' , 'my_image_filepath' => 'MY Image filepath' , ); return $fields ; }



  8. Copy Source | Copy HTML function my_module_node_import_fields( $type ) { if (_uc_product_node_import_is_product( $type )) { $fields = array ( 'my_field_0' => 'MY FIELD 0' , 'my_field_1' => 'MY FIELD 1' , ... 'my_field_n' => 'MY FIELD N' , 'my_image_filepath' => 'MY Image filepath' , ); return $fields ; }



  9. Copy Source | Copy HTML function my_module_node_import_fields( $type ) { if (_uc_product_node_import_is_product( $type )) { $fields = array ( 'my_field_0' => 'MY FIELD 0' , 'my_field_1' => 'MY FIELD 1' , ... 'my_field_n' => 'MY FIELD N' , 'my_image_filepath' => 'MY Image filepath' , ); return $fields ; }



  10. Copy Source | Copy HTML function my_module_node_import_fields( $type ) { if (_uc_product_node_import_is_product( $type )) { $fields = array ( 'my_field_0' => 'MY FIELD 0' , 'my_field_1' => 'MY FIELD 1' , ... 'my_field_n' => 'MY FIELD N' , 'my_image_filepath' => 'MY Image filepath' , ); return $fields ; }



  11. Copy Source | Copy HTML function my_module_node_import_fields( $type ) { if (_uc_product_node_import_is_product( $type )) { $fields = array ( 'my_field_0' => 'MY FIELD 0' , 'my_field_1' => 'MY FIELD 1' , ... 'my_field_n' => 'MY FIELD N' , 'my_image_filepath' => 'MY Image filepath' , ); return $fields ; }





my_field_nは、オプションフィールドのマシン名です。

MY FIELD Nは、インポート時にユーザーにフィールドが表示される方法です。

my_image_filepath-画像ファイルへの直接パスを含める必要があります。



次に、フックhook_node_import_prepare()を追加します。 ここで、フィールドの有効性を確認し、インポートの準備をすることができます。

Copy Source | Copy HTML



  1. function my_module_node_import_prepare(& $ node$ preview = FALSE){
  2. $ errors = array ();
  3. if (! isset$ node-> my_field_0)|| empty$ node-> my_field_0)){
  4. $ errors [] = t( 'ERROR!on MY FIELD 0' );
  5. } else $ node-> field_0 = $ node-> my_field_0;
  6. if (! isset$ node-> my_field_1)|| empty$ node-> my_field_1)){
  7. $ errors [] = t( 'ERROR!on MY FIELD 1' );
  8. } else $ node-> field_1 = $ node-> my_field_1;
  9. ...
  10. if (! isset$ node-> my_field_n)|| empty$ node-> my_field_n)){
  11. $ errors [] = t( 'ERROR!on MY FIELD N' );
  12. } else $ node-> field_n = $ node-> my_field_n;
  13. $エラーを 返します。
  14. }


ここでフィールド( my_field_n )をチェックします。何かが間違っている場合はエラーになり、そうでない場合は実際のフィールド( field_n )に書き込みます。

ところで、フィールドがCCK'shoeの場合、次のようにアクセスする必要があります$ node-> field_n [0] ['value']



画像をインポートするために、別の関数を作成しました。

Copy Source | Copy HTML



  1. function _my_module_create_image_field( $ filepath$ nid ){
  2. $ file_temp = file_get_contents$ filepath );
  3. $ file_temp = file_save_data( $ file_temp 、file_directory_path()。 '/ images /'。basename($ filename )、FILE_EXISTS_RENAME);
  4. $ image_field [ '0' ] [ 'fid' ] = 'upload' ;
  5. $ image_field [ '0' ] [ 'title' ] = basename( $ file_temp );
  6. $ image_field [ '0' ] [ 'nid' ] = $ nid ;
  7. $ image_field [ '0' ] [ 'filename' ] = basename( $ file_temp );
  8. $ image_field [ '0' ] [ 'filepath' ] = $ file_temp ;
  9. $ image_field [ '0' ] [ 'filemime' ] = mime_content_type( $ file_temp );
  10. $ image_field [ '0' ] [ ' filesize ' ] = filesize$ file_temp );
  11. $ image_fieldを返します。
  12. }


フックhook_node_import_prepare()でこれを使用します:

Copy Source | Copy HTML



  1. if (! $ preview ){
  2. ifisset$ node-> my_image_filepath)){
  3. if (file_exists( $ node-> naeyc_image_filepath)){
  4. $ node-> field_image_cache = _my_module_create_image_field( $ node-> my_image_filepath、 $ node-> nid);
  5. } else $ errors [] = $ node-> my_image_filepath。 t( 'ファイルが存在しません。' );
  6. }
  7. }


プレビュー$ previewが担当します。 プレビューのこのコードは実行されませんが、ユーザーがインポートを開始した後にのみ実行されます。



それがすべてです。

あなたの批判を待っています:)



All Articles