<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>cms | 伪架构师</title>
    <link>/tags/cms/</link>
      <atom:link href="/tags/cms/index.xml" rel="self" type="application/rss+xml" />
    <description>cms</description>
    <generator>Source Themes Academic (https://sourcethemes.com/academic/)</generator><language>zh</language><lastBuildDate>Wed, 05 Aug 2015 10:32:19 +0800</lastBuildDate>
    <image>
      <url>/img/logo-wide.png</url>
      <title>cms</title>
      <link>/tags/cms/</link>
    </image>
    
    <item>
      <title>Ubercart 3 模块列表</title>
      <link>/post/ubercart-3-module-list/</link>
      <pubDate>Wed, 05 Aug 2015 10:32:19 +0800</pubDate>
      <guid>/post/ubercart-3-module-list/</guid>
      <description>&lt;p&gt;我编写了一个Ubercart 3兼容的模块列表，对于这其中列出的模块，我没有做一个完整的测试，这个工作太庞大了。另外也请注意，有些模块可能还在开发状态，可能并未完成甚至是刚刚启动。&lt;/p&gt;

&lt;p&gt;如果有我漏记的模块，请补充到本页面中。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://drupal.org/project/uc_adyen&#34; target=&#34;_blank&#34;&gt;Adyen Ubercart支付&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;这个模块提供了对Adyen支付的支持。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://drupal.org/project/agreservations&#34; target=&#34;_blank&#34;&gt;Agreservations&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;这一模块用于处理预订过程的资源保留。（例如车，房间等可按时间以及日期进行订购的商品——译者注）。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://drupal.org/project/ajaxblocks&#34; target=&#34;_blank&#34;&gt;Ajax Blocks&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;在载入一个被其他匿名用户完整缓存的页面之后，用AJAX请求来完成Block的加载。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://drupal.org/project/uc_alipay&#34; target=&#34;_blank&#34;&gt;Alipay&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;你懂的。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://drupal.org/project/ubercart_attribute_stock&#34; target=&#34;_blank&#34;&gt;Attribute Stock&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;这个模块同商品属性协同工作，可以将属性组合和库存结合起来进行管理。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://drupal.org/project/uc_authorizenet_simdpm&#34; target=&#34;_blank&#34;&gt;Authorize.Net SIM/DPM Payment Methods&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Authorize.Net SIM/DPM支付模块为Ubercart用户提供了Authorize.NET提供的两种支付方式。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://drupal.org/project/balance_tracker&#34; target=&#34;_blank&#34;&gt;Balance Checker&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;这个模块为用户生成一张余额表，用于展示用户的收入和支出。（基本废了——译者注）。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://drupal.org/project/uc_bank_transfer&#34; target=&#34;_blank&#34;&gt;Bank Transfer&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;这个模块提供了一种支付方式，用于把店铺的银行帐号信息展示给用户，便于用户进行汇款支付。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://drupal.org/project/uc_brazilian_payments&#34; target=&#34;_blank&#34;&gt;Brazilian Payment for Ubercart&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;又一个支付，懒得翻。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://drupal.org/project/uc_canadapost&#34; target=&#34;_blank&#34;&gt;Canada Post&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;这一模块用于查询加拿大邮政报价。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://drupal.org/project/uc_canpar&#34; target=&#34;_blank&#34;&gt;Canpar Shipping Quotes&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;这一模块用于查询Canpar的配送报价，不仅支持基础费率，也支持客户的协商费率。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://drupal.org/project/colorbox&#34; target=&#34;_blank&#34;&gt;ColorBox&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;ColorBox一个轻量级的可定制的Lightbox插件，兼容从jQuery *3到*6，这个模块完成Colorbox到Drupal的集成。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://drupal.org/project/course&#34; target=&#34;_blank&#34;&gt;Course&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;将任意的内容类型当作e-learning课程来使用，并可以建立有级别的或无级别的课程对象。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://drupal.org/project/crumbs&#34; target=&#34;_blank&#34;&gt;Crumbs&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;一种新的弹性更好，更具个性的面包屑。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://drupal.org/project/uc_dotpay_pl&#34; target=&#34;_blank&#34;&gt;Dotpay&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;波兰的Dotpay.pl的支付集成（天下支付何其多——译者）&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://drupal.org/project/ddblock&#34; target=&#34;_blank&#34;&gt;Dynamic display block&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;这一模块主要用于在首页显著位置显示轮播内容（貌似已经年老色衰了——译者）。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://drupal.org/project/uc_earlybird&#34; target=&#34;_blank&#34;&gt;Early Bird Discount&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;这个折扣模块用于实现基于时间的促销，无序促销码，可以针对每个商品分别设置。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://drupal.org/project/easyrec_for_ubercart&#34; target=&#34;_blank&#34;&gt;Easyrec&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;将&lt;a href=&#34;http://easyrec.org/&#34; target=&#34;_blank&#34;&gt;Easyrec&lt;/a&gt;的推荐功能集成到Ubercart之中，用于提供相关内容推荐。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://drupal.org/project/uc_ems&#34; target=&#34;_blank&#34;&gt;EMS Russian post shipping&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;俄国EMS（懒得翻——译者）。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://drupal.org/project/uc_eway&#34; target=&#34;_blank&#34;&gt;eWay Payment Gateway&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;一家来自袋鼠国的叫做eWay的支付商的支付网关。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://drupal.org/project/uc_extra_fields_pane&#34; target=&#34;_blank&#34;&gt;Extra Field Checkout Pane&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;这个模块使得管理员可以定义附加的地址字段，这一字段会在Checkout过程以及订单处理页面中使用。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://drupal.org/project/uc_fedex&#34; target=&#34;_blank&#34;&gt;Fedex Shipping&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;利用FedEx的Web Service来计算运费。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://drupal.org/project/uc_field_attribute&#34; target=&#34;_blank&#34;&gt;Field attributes&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;这个模块把Ubercart的属性系统和Drupal核心的Field API连接起来，可以从多值字段中自动创建商品属性和选项。（好东西，不过好像不太可靠——译者）&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://drupal.org/project/forgotten_login&#34; target=&#34;_blank&#34;&gt;Forgotten Login&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;监控并对失败的登录进行反应（对过多的失败登录尝试，自动发送邮件协助用户复位密码——译者）。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://drupal.org/project/uc_global_quote&#34; target=&#34;_blank&#34;&gt;Global Quote&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;运费计算模块，提供了按照重量和配送地址计算运费的能力。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://drupal.org/project/google_analytics&#34; target=&#34;_blank&#34;&gt;Google Analytics&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;为网站添加Google分析能力。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://drupal.org/project/uc_hotel&#34; target=&#34;_blank&#34;&gt;Hotel Booking System&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;旅店预订系统。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://drupal.org/project/ideal&#34; target=&#34;_blank&#34;&gt;iDEAL&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;允许用户使用iDEAL支付API进行荷兰银行的账号间转账。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://drupal.org/project/is_useful&#34; target=&#34;_blank&#34;&gt;Is Useful&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;为Entity添加iTunes/Amazon风格的“这条内容有用么？”的打分系统。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://drupal.org/project/jqzoom&#34; target=&#34;_blank&#34;&gt;jQZoom&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;jQZoom模块是jQZoom这一jQuery插件的实现。为图片提供了放大效果。当用户鼠标移到一个图片上时，鼠标指针区域的图片会显示一个放大的版本。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://drupal.org/project/nap&#34; target=&#34;_blank&#34;&gt;Node access product&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;为Product Node提供“Node Access”设置，订购了产品的用户可以查看指定的内容。这一设置也可以应用到分类，特定Node或者View中。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://drupal.org/project/uc_tracking&#34; target=&#34;_blank&#34;&gt;Package Tracking&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;配送跟踪模块。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://drupal.org/project/paypernode&#34; target=&#34;_blank&#34;&gt;Pay-per-node&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;这个模块会暂时覆盖Node的创建权限，允许部分用户创建一定数量的Node。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://drupal.org/project/payment_ubercart&#34; target=&#34;_blank&#34;&gt;Payment&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;提供支付能力（摔，这是充数——译者）。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://drupal.org/project/uc_payonline&#34; target=&#34;_blank&#34;&gt;Payonline.ru payment for Ubercart&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;（作者都懒得说了——译者）&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://drupal.org/project/uc_rec&#34; target=&#34;_blank&#34;&gt;Products Recommender&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;这个模块提供了两个缺省视图，买了这个商品的人还买了什么，以及根据当前用户的购买记录推荐的商品。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://drupal.org/project/uc_qbms&#34; target=&#34;_blank&#34;&gt;Quickbooks Merchant Service&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;这个模块利用Quickbooks Merchant Services(QBMS)的服务，基于uc_credit为网店提供了一个支付卡支付网关。这不是Quickbook的完整集成，他只是简单的为QMBS帐号提供了一个简单的信用卡流程。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://drupal.org/project/uc_reorder&#34; target=&#34;_blank&#34;&gt;Reorder button for Ubercart&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;回头客很重要，利用这一模块方便回头客重复订购需要的服务和商品。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://drupal.org/project/rmzone&#34; target=&#34;_blank&#34;&gt;Royal Mail zones&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;英国皇家邮政将全球邮寄地址分为四个区：英国，欧洲是第一和第二区，这个模块用于区别一个地址是哪个区。注意根据这个定义，英国不是欧洲的一部分，有些反直觉。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://drupal.org/project/uc_simplenews&#34; target=&#34;_blank&#34;&gt;Simplenews subscription&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;在Ubercart checkout界面提供一个简单的订阅新闻邮件的功能。（目前还是Dev，也没有Demo），不懂干嘛的。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://drupal.org/project/stripe&#34; target=&#34;_blank&#34;&gt;Stripe&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;对 &lt;code&gt;https://stripe.com/&lt;/code&gt; 的一些集成。（似乎是个移动支付方案——译者）。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://drupal.org/sandbox/matus.lestan/1732798&#34; target=&#34;_blank&#34;&gt;TatraPay(沙箱)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;一个斯洛伐克银行的支付模块。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://drupal.org/project/uc_addresses&#34; target=&#34;_blank&#34;&gt;Ubercart Addresses&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;让顾客可以有一个或更多的地址。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://drupal.org/project/uc_affiliate2&#34; target=&#34;_blank&#34;&gt;Ubercart Affiliate v2&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;提供分支机构功能（猜的，看模块页面有佣金，报表等等相关功能——译者）&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://drupal.org/project/uc_attribute_files&#34; target=&#34;_blank&#34;&gt;Ubercart Attribute Files&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;给Ubercart提供文件上传属性，例如打印店就必须在结算之前上传一个图片。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://drupal.org/project/uc_attributes_in_cart&#34; target=&#34;_blank&#34;&gt;Ubercart attributes in cart&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;可以允许消费者在购物车中修改商品的属性选择。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://drupal.org/project/uc_auction&#34; target=&#34;_blank&#34;&gt;Ubercart Auction&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;用这个模块可以在网店上拍卖商品。当一个商品进入拍卖时，用户无法将这一商品放入购物车，而只能进行叫价，直到拍卖活动结束。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://drupal.org/project/uc_epdq&#34; target=&#34;_blank&#34;&gt;Ubercart Barclays EPDQ Payment Gateway&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;还是支付啊。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://drupal.org/project/uc_cart_login_flow&#34; target=&#34;_blank&#34;&gt;Ubercart Cart Login Flow&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;根据用户登录情况不同（结算页面还是其他页面），决定不同的购物车合并或替换的行为。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://drupal.org/project/uc_checkoutfi&#34; target=&#34;_blank&#34;&gt;Ubercart Checkout.fi Payment Method&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;支付支付。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://drupal.org/project/uc_custom_price&#34; target=&#34;_blank&#34;&gt;Ubercart Custom Price&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;最初这个模块是用来允许使用自定义PHP代码跟产品关联，用于调整产品价格。（危险行为——译者）。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://drupal.org/project/uc_coupon&#34; target=&#34;_blank&#34;&gt;Ubercart Discount Coupons&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;提供折扣功能。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://drupal.org/project/uc_dropdown_attributes&#34; target=&#34;_blank&#34;&gt;UC Dropdown Attributes&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;这一模块提供了一个用于定义属性间联动关系的界面。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://drupal.org/project/uc_gbase&#34; target=&#34;_blank&#34;&gt;Ubercart Google Merchant Integration&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;将Ubercart和Google Merchant进行集成。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://drupal.org/project/ubercart_funds&#34; target=&#34;_blank&#34;&gt;Ubercart FUnds&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;提供一个资金管理系统，包括存入，取出，转账等功能。覆盖了大多数paypal类似的功能。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://drupal.org/project/uc_migs&#34; target=&#34;_blank&#34;&gt;Ubercart MIGS Gateway&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;MIGS(MasterCart网关服务)，第三方的支付处理。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://drupal.org/project/uc_optional_checkout_review&#34; target=&#34;_blank&#34;&gt;Ubercart Optional Checkout Review&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;管理员可以设置在结算页面是否显示一个预览按钮。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://drupal.org/project/uc_pma&#34; target=&#34;_blank&#34;&gt;Ubercart Payment Method Adjustments&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;(仅有5，6版本——译者)。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://drupal.org/project/uc_product_actions&#34; target=&#34;_blank&#34;&gt;Ubercart Product Actions&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;依赖VBO和一些代码，协助店铺管理员进行一些批量操作，包括对重量和价格的调整。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://drupal.org/project/uc_product_panes&#34; target=&#34;_blank&#34;&gt;Ubercart Product Checkout Panes&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;对指定产品的结算过程中，只显示指定的结算块。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://drupal.org/project/uc_product_minmax&#34; target=&#34;_blank&#34;&gt;Ubercart Product Minimum &amp;amp; Maximum&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;为商品加上最小数量，最大数量购买次数等限制。
另外这些限制对套装产品是无效的。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://drupal.org/project/uc_realex&#34; target=&#34;_blank&#34;&gt;Ubercart Realex&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;又一个支付。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://drupal.org/project/uc_restrictions&#34; target=&#34;_blank&#34;&gt;Ubercart Restrictions&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;防止错误的人购买错误的东西，或邮寄到错误的地址。
例如某些商品不能卖给未成年人，有些商品不能邮寄到某些地方。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://drupal.org/project/uc_sagepay&#34; target=&#34;_blank&#34;&gt;Ubercart Sage Pay&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;信用卡支付模块。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://drupal.org/project/uc_sermepa&#34; target=&#34;_blank&#34;&gt;Ubercart Sermepa Payment System&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;支付&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://drupal.org/project/uc_stamps&#34; target=&#34;_blank&#34;&gt;Ubercart Stamps.com® Shipping Labels&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;利用Stampes.com的服务，为Ubercart的订单打印USPS配送标签。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://drupal.org/project/uc_termsofservice&#34; target=&#34;_blank&#34;&gt;Ubercart Terms of Service&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;为购物车或结算页面提供一份服务条款和一个“我同意”的勾选框。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://drupal.org/project/uc_webform_pane&#34; target=&#34;_blank&#34;&gt;Ubercart Webform Checkout Pane&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;把一个Web form Node展示在订单或结算页面上，可以用于调查或一些附加界面。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://drupal.org/project/uc_add_to_cart_block&#34; target=&#34;_blank&#34;&gt;UC Add to Cart Block&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;如果你希望使用“添加到购物车”，又不想使用Views，也不想写PHP，这个模块能帮你创建一个简单的Block来实现这一想法，这个Block可以随处放置和重用。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://drupal.org/project/uc_bitcoin&#34; target=&#34;_blank&#34;&gt;UC Bitcoin&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;BitCoin支付。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://drupal.org/project/uc_civicrm&#34; target=&#34;_blank&#34;&gt;UC CiviCRM&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Ubercart和CiviCRM集成。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://drupal.org/project/uc_dropdown_attributes&#34; target=&#34;_blank&#34;&gt;UC Dropdown Attributes&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;同53重复。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://drupal.org/project/uc_free_order&#34; target=&#34;_blank&#34;&gt;UC Free Order Payment Method&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;这个模块注入到支付过程之中，用于展示一个“免费”的支付方法。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://drupal.org/project/uc_gopay&#34; target=&#34;_blank&#34;&gt;UC GoPay&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;狗币支付。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://drupal.org/project/uc_panels&#34; target=&#34;_blank&#34;&gt;UC Panels&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;把Ubercart和CTools和Panels进行了基本的集成。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://drupal.org/project/uc_paygate&#34; target=&#34;_blank&#34;&gt;UC PayGate&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;另一个支付。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://drupal.org/project/uc_price_visibility&#34; target=&#34;_blank&#34;&gt;UC Price Visibility&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;一般来说，店主希望宣传商品，但并不希望暴露价格，而是“请联系我们询问价格”这样的说辞。这个模块让管理员可以为不同角色指定显示还是隐藏每个商品的价格。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://drupal.org/project/uc_product_power_tools&#34; target=&#34;_blank&#34;&gt;UC Product Power tools&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;用于增强Ubercart的创建商品界面（7还在Dev——译者）。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://drupal.org/project/uc_sage_payments&#34; target=&#34;_blank&#34;&gt;UC Sage Payment Gateway&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;支付还是支付。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://drupal.org/project/uc_shipwire&#34; target=&#34;_blank&#34;&gt;UC Shipwire (Order Fulfillment)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;利用Shipwire提供配送查询。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://drupal.org/project/uc_who_bought_what&#34; target=&#34;_blank&#34;&gt;Who Bought What&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;查询用户和商品之间的订购关系，用于后续管理工作，例如客服回访等。&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>最佳实践：hook_cron</title>
      <link>/post/best-practice-hook_cron/</link>
      <pubDate>Wed, 05 Aug 2015 10:32:19 +0800</pubDate>
      <guid>/post/best-practice-hook_cron/</guid>
      <description>

&lt;p&gt;原文：&lt;a href=&#34;https://www.thirdandgrove.com/best-practices-for-using-drupals-cron-system-hook_cron&#34; target=&#34;_blank&#34;&gt;Best practices for using Drupal’s cron system: hook_cron()
&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;如果你成功的设置了 &lt;a href=&#34;https://drupal.org/cron&#34; target=&#34;_blank&#34;&gt;Drupal Cron&lt;/a&gt;，&lt;a href=&#34;https://api.drupal.org/api/drupal/modules%21system%21system.api.php/function/hook_cron/7&#34; target=&#34;_blank&#34;&gt;hook_cron()&lt;/a&gt; 提供了一种不依赖页面请求的方式来进行后台任务，然而，Cron 的滥用也有可能造成性能问题，甚至威胁数据完整性。&lt;/p&gt;

&lt;p&gt;这里提供一些我们在实际工作中得来不易的一些 Cron 方面的最佳实践：&lt;/p&gt;

&lt;h2 id=&#34;第一条-用变量控制-cron&#34;&gt;第一条：用变量控制 Cron。&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;hook_cron()&lt;/code&gt; 的每一次调用都封装在一个变量检查的条件之内，这个变量的缺省值是TRUE，想要禁止这个 CRON，只要把这个变量创建起来并赋值为 False 即可，当你的 CRON 过程失控或者消耗太多资源时，这一手段是非常有效的。&lt;/p&gt;

&lt;pre&gt;&lt;code class=&#34;language-php&#34;&gt;/**
  * Implements hook_cron().
  */
function example_cron() {
  if (variable_get(&#39;example_process_users_during_cron&#39;, TRUE)) {
    module_load_include(&#39;inc&#39;, &#39;example&#39;);
    example_process_users();
  }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;h2 id=&#34;第二条-在-inc-文件中实现逻辑&#34;&gt;第二条：在 inc 文件中实现逻辑。&lt;/h2&gt;

&lt;p&gt;需要注意的是，Drupal 很重：每次页面请求都会载入所有被启用的 Module 文件。所以 module 文件里只应该包含每次页面请求都需要执行的部分，Cron 代码运行频率很低，因此不应包含在 module 文件里。这也是一条适用于其他模块开发的最佳实践。&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;（这是快速得知一个模块作者是否真正了解 Drupal 的办法。）&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2 id=&#34;第三条-drush-命令&#34;&gt;第三条：Drush 命令。&lt;/h2&gt;

&lt;p&gt;即使你不想使用 Drush 来运行 Cron，也应该创建一个简单的 Drush 命令来运行你的代码。在你的 CRON 过程消耗过高的时候，可以利用前面第一条说的方法禁用这条 CRON 命令，然后做一个系统的 Cron 过程，在恰当的时机来利用 drush 直接运行这段代码。可以根据开销情况，用这种方法来单独调节每个 Cron 任务。这是一种未雨绸缪的措施。&lt;/p&gt;

&lt;p&gt;下面是 &lt;code&gt;example.drush.inc&lt;/code&gt; 文件里的示例代码：&lt;/p&gt;

&lt;pre&gt;&lt;code class=&#34;language-php&#34;&gt;/**
  * Implements hook_drush_command().
  */
function example_drush_command() {
  return array(
    &#39;example-process-users&#39; =&amp;gt; array(
      &#39;description&#39; =&amp;gt; dt(&#39;Process the user accounts.&#39;),
      &#39;alias&#39; =&amp;gt; array(&#39;epu&#39;),
    ),
  );
}

/**
  * Process user accounts.
  */
function drush_example_example_process_users() {
  module_load_include(&#39;inc&#39;, &#39;example&#39;);
  example_process_users();
}
&lt;/code&gt;&lt;/pre&gt;

&lt;h2 id=&#34;第四条-批处理&#34;&gt;第四条：批处理。&lt;/h2&gt;

&lt;p&gt;在开发之前，不要仅仅想着今天或这个月的处理量，而应该想想一年甚至更大量的情况，确保你的处理效率能够适应数据的增长。&lt;/p&gt;

&lt;p&gt;这意味着，需要在代码重一次处理大批记录，可以用一个变量来指定每次的处理量，或者可以哦能够队列的方式来处理。&lt;/p&gt;

&lt;h2 id=&#34;第五条-我真的需要-cron-么&#34;&gt;第五条：我真的需要 Cron 么？&lt;/h2&gt;

&lt;p&gt;Drupal 的 &lt;code&gt;hook_cron()&lt;/code&gt; 是一个很适合处理简单，常见任务的方式。不过如果你要处理大量数据，或者复杂任务，你应该使用一些更专门的方法，例如 Drupal 7 的 &lt;a href=&#34;https://api.drupal.org/api/drupal/modules!system!system.queue.inc/group/queue/7&#34; target=&#34;_blank&#34;&gt;Queue System&lt;/a&gt;甚至 Drupal 之外的方案，例如 &lt;a href=&#34;http://jenkins-ci.org/&#34; target=&#34;_blank&#34;&gt;Jenkins CI&lt;/a&gt;。&lt;/p&gt;
</description>
    </item>
    
  </channel>
</rss>
