2011-09-29 56 views
3

我有自定義字段運行的Drupal 7和UC 3。我希望能夠在購物車中顯示這些字段,但似乎無法做到。這是我第一次創建模塊!添加自定義字段到購物車顯示 - Ubercart 3

我嘗試使用hook_form_alter(& $形式,& $ form_state,$ form_id){}自定義模塊:

function swcart_form_alter(&$form, &$form_state, $form_id) { 
    switch($form_id) { 
    case 'uc_cart_view_form': 

     // Adding Grade column 
     $form['items']['#columns']['grade'] = array('cell' => 'Grade', 'weight' => 3.5); 

     for($i=0; $i < count($form['items']); $i++) { 
    if(isset($form['items'][$i]['nid'])) { 
      // Loading the node so we can retrieve the information we need. 
     $product = node_load($form['items'][$i]['nid']['#value']); 

      // Adding the 'Grade' to the product that is in the user's cart. 
     $form['items'][$i]['grade']['#value'] = $product -> field_product_term_data; 
    } 
     } 
     break; 
    } 
} 

列 '成績' 顯示出來,但表中沒有任何數據。我該怎麼辦?我必須修改TAPir表嗎?掛鉤其他uc_cart功能? 感謝

+0

通過執行print_r(node_load($ form ['items'] [1] ['nid'] ['#value']))來檢查額外字段是否在購物車中傳遞。 。我得到一些像減去不相關的東西'code'stdClass Object([vid] => 7270 [uid] => 1 [title] => Bai Bu ... [field_product_term_grade] => Array([und] => Array([ 0] => Array([tid] => 4)))[field_product_botanical] => Array([und] => Array([0] => Array([value] => Stemonae Radix [format] => [safe_value ] => Stemonae Radix)))''code'我怎樣才能提取** bold ** [field_product_term_grade] ** bold **的值? – Frederic

+0

任何人都可以幫忙嗎?我在20年前離開了編程與pascal,但面向對象的東西現在是不同於以前。我不知道如何使用stdClass對象,也不訪問他們的數據?任何好的教程?預先感謝... – Frederic

回答

4

這個兩個的Ubercart 3 API鏈接應該有所幫助: hook_tapir_table_alter uc_cart_view_table

在第一個環節有與數據相加列的例子。

編輯:通過使用此類代碼添加價格每1產品列完成。希望這能幫助某人克服Ubercart的僵化。

function YOUR_MODULE_NAME_form_uc_cart_view_form_alter(&$form, &$form_state) { 
    $form['items']['#columns']['remove']['weight'] = 6; 
    $form['items']['#columns']['total']['weight'] = 5; 
    $form['items']['#columns']['qty']['weight'] = 4; 

    $form['items']['#columns']['price'] = array(
     'cell' => t('Price'), 
     'weight' => 3, 
); 
} 
function YOUR_MODULE_NAME_tapir_table_alter(&$table, $table_id) { 
    if ($table_id == 'uc_cart_view_table') { 
    foreach (element_children($table) as $key) { 
     if (!empty($table['#parameters'][1][$key]['nid'])) { 
     $node = node_load($table['#parameters'][1][$key]['nid']['#value']); 
     $table[$key]['price'] = array(
      '#markup' => theme('uc_product_price',array('element' => array('#value' => $node->sell_price))), 
     ); 
     } 
    } 
    } 
} 
+0

做得好,這幫助我與我的問題ubercart :) – NenadP

+0

我是Drupal的新手,你能告訴我如何以及在哪裏使用這段代碼。 – tdk

+0

在自定義模塊中。不要忘記將函數名稱中的YOUR_MODULE_NAME更改爲您的模塊名稱。 關於如何製作您自己的模塊的教程:https://www.drupal.org/node/1074360 –

相關問題