对匿名用户不显示添加购物车按钮

指定Hook:

hook_form_alter

'#access' => !is_anonymous

定制添加到购物车表单

如果觉得默认的购物车表单组件不够丰富,可以使用表单修改hook,也可以使用下面更加简洁的方法:

拓展代码:commerce_cart\Form\AddToCartForm.php

产品显示 - 图1

在这可以重写任何方法.

使用hook:hook_entity_type_build,去切换你自己的AddToCartForm代码:

  1. /**
  2. * Implements hook_entity_type_build().
  3. */
  4. function mymodule_entity_type_build(array &$entity_types) {
  5. $entity_types['commerce_order_item']->setFormClass('add_to_cart', '\Drupal\mymodule\Form\AddToCartForm');
  6. }

如果你发现你的代码不生效,可能是优先级不够,可以使用hook_module_implements_alter或者module_set_weight去调整优先级。

修改产品twig变量

使用hook:hook_preprocess_commerce_product,去调整变量:

  1. function mymodule_preprocess_commerce_product(&$variables) {
  2. $product = $variables['elements']['#commerce_product'];
  3. ...
  4. }