首页 / 帖子
ubercart里,怎么根据当前node的id调出价格和立即购买按钮?

比如调分类信息,可以用taxonomy_term_load 。

但是ubercart里,用哪个api?

用views的话,可以调出价格和立即购买按钮。

但是现在不想用views的输出。

打印view->result只能看到图片等字段,价格和立即购买按钮并不是字段。那如何调出他们呢?


3个答案
发布于:2014-10-15 11:28

ubercart不熟悉,但是快速帮你看了下。

http://cgit.drupalcode.org/ubercart/tree/uc_product/views/uc_product_handler_field_addtocart.inc

   if (uc_product_is_product($values->{$this->aliases['type']})) {
      $type = node_type_get_type($values->{$this->aliases['type']});
      $base = $type->base;
      $product = node_load($values->{$this->aliases['nid']});
      if (function_exists($base . '_add_to_cart_form')) {
        $form = drupal_get_form($base . '_add_to_cart_form_' . $values->{$this->aliases['nid']}, $product);
        return drupal_render($form);
      }
    }
  }

这段代码应该有所帮助。ubercart 7.x-3.x

老葛
发布于:2014-10-15 11:46

Ubercart自带一个Cart Links的模块,启用后可以通过链接将产品添加到购物车

例如 /cart/add/p23_q5 这个链接就是添加5个nid为23的产品到购物车里,具体规则可以启用模块后查看其帮助页面。

这种方法可以很灵活的定制自己的购买按钮。

老葛
发布于:2014-10-15 13:05

Cart Links的模块稍后再试。

卡萨布兰卡的我试过,可以实现。

比如购买,从源码,找到

foreach($view->result as $v){
。。。
$product = node_load($v->nid);
$base ='uc_product';
      if (function_exists($base . '_add_to_cart_form')) {
        $form = drupal_get_form($base . '_add_to_cart_form_' . $v->nid, $product);
        print drupal_render($form);
  }
。。。

,然后入到tpl里可以实现。

但是有个小问题,可不可以利用它原来的方法 呢?

比如利用这个对象 uc_product_handler_field_addtocart的函数render.

----

 $objbuttonby=new uc_product_handler_field_addtocart;

   print $objbuttonby->render($v);
   ----------
   上面这样放tpl就不行。