如何删除prestashop 1.6.1上的发货运输步骤?

时间:2015-09-09 09:22:34

标签: prestashop prestashop-1.6

我是 prestashop 的新用户,因为我只销售虚拟产品,所以我在删除发送步骤方面遇到了重大问题。我正在使用prestashop 1.6.1。

我知道我必须修改order-carrier.tpl文件并在此处跟踪了几个帖子,但无法正确完成。

你们是否有任何关于如何做到这一点的实际想法?

1 个答案:

答案 0 :(得分:4)

Bonjour,这就是我的所作所为

覆盖 AdminOrderPreferencesController 并添加布尔配置字段以切换此功能

$this->fields_options = array(
    [...]
    'PS_ORDER_PROCESS_BYPASS_SHIPPING' => array(
        'title' => $this->l('Bypass shipping step'),
        'hint' => $this->l('Do not show shipping step in order process.'),
        'validation' => 'isBool',
        'cast' => 'intval',
        'type' => 'bool'
    )
);

您现在可以在偏好设置>下的Backoffice中找到切换按钮。订单


覆盖 OrderController 并在if方法中添加init(),如果控制器在交付步骤中自行设置,则将当前步骤设置为付款步骤

public function init()
{
    global $orderTotal;

    parent::init();

    $this->step = (int)Tools::getValue('step');

    // HERE IT IS
    if((bool)Configuration::get('PS_ORDER_PROCESS_BYPASS_SHIPPING') && $this->step == self::STEP_DELIVERY){
        $this->step = self::STEP_PAYMENT;
    }

    if (!$this->nbProducts) {
        $this->step = -1;
    }

还绕过了initContent()方法中付款步骤中的CGV检查验证。
如果你没有,CGV将永远不会被检查,它将重定向你交付步骤,你会告诉他他实际上是在付款步骤,他将再次检查CGV,他将执行相同的重定向...并且您处于无限循环

case OrderController::STEP_PAYMENT:
    $cgv = Tools::getValue('cgv') || $this->context->cookie->check_cgv;

    if (
        !(bool)Configuration::get('PS_ORDER_PROCESS_BYPASS_SHIPPING') && // HERE IT IS
        $is_advanced_payment_api === false && Configuration::get('PS_CONDITIONS')
        && (!Validate::isBool($cgv) || $cgv == false)
    ) {
        Tools::redirect('index.php?controller=order&step=2');
    }

将配置参数传递给视图以修改显示

$this->context->smarty->assign('bypass_shipping_step', (bool)Configuration::get('PS_ORDER_PROCESS_BYPASS_SHIPPING'));

在你的观点中,你是否使用一些if造型 在 order-steps.tpl 中,您可以在第四个{if not $bypass_shipping_step}...{/if}周围添加li以隐藏它,并执行以下操作:

{if $bypass_shipping_step}
<style>
    ul.step li{
        width:25%;
    }
</style>
{/if}

或导入一个更干净的专用样式表。


希望它有所帮助。