Drupal 7 将自定义字段添加到购物车显示-Ubercart 3

Drupal 7 将自定义字段添加到购物车显示-Ubercart 3,drupal-7,ubercart,Drupal 7,Ubercart,我让Drupal7和UC3运行自定义字段。我希望能够在购物车中显示这些字段,但似乎无法做到这一点。这是我第一次尝试创建模块 我尝试在自定义模块中使用hook_form_alter(&$form,&$form_state,$form_id){}: function swcart_form_alter(&$form, &$form_state, $form_id) { switch($form_id) { case 'uc_cart_view_form':

我让Drupal7和UC3运行自定义字段。我希望能够在购物车中显示这些字段,但似乎无法做到这一点。这是我第一次尝试创建模块

我尝试在自定义模块中使用hook_form_alter(&$form,&$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;
  }
}
函数swcart\u form\u alter(&$form,&$form\u state,$form\u id){
交换机($form_id){
案例“uc车视图表单”:
//添加坡度列
$form['items']['#columns']['grade']=array('cell'=>grade','weight'=>3.5);
对于($i=0;$ifield_product_term_data;
}
}
打破
}
}
“Grade”列将显示,但表中没有数据。我该怎么办?我必须修改TAPir表吗?挂接其他uc_购物车功能?
谢谢

Ubercart 3 API的这两个链接应该会有所帮助:

在第一个链接中,有一个使用数据添加列的示例

编辑:最后使用这样的代码添加每1个产品的价格列。希望这能帮助人们克服优步车的僵化

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))),
        );
      }
    }
  }
}

通过执行打印(节点加载($form['items'][1]['nid']['#value']),检查是否在购物车中传递了额外字段。我得到了一些像减去不相关的东西
code
stdClass对象([vid]=>7270[uid]=>1[title]=>Bai-Bu…[field\u-product\u-term\u-grade]=>Array([und]=>Array([0]=>Array([tid]=>4))[field\u-product\u-植物学]=>Array([und]=>Array([0]=>Array([value]=>Array[value]=>Stemonae]基]格式]=>safe\u值]=>百部根)…
code
如何提取粗体**[字段\产品\术语\等级]**bold的价值?有人帮忙吗?大约20年前我用pascal停止了编程,但现在面向对象的东西与以前大不相同。我不知道如何使用stdClass对象,也不知道如何访问它们的数据?有什么好的教程吗?提前感谢……我是Drupal的新手,你能告诉我如何以及在哪里使用这些代码吗。在自定义模块中。别忘了将函数名称中的_MODULE_名称更改为模块名称。有关如何制作自己的模块的教程: