2015-09-09 1 views
1

Я новичок в prestashop, и у меня возникли серьезные проблемы с удалением этапа доставки, потому что я продаю только виртуальные продукты. Я использую prestashop 1.6.1.Как удалить этап доставки доставки на prestashop 1.6.1?

Я знаю, что мне нужно изменить файл order-carrier.tpl и последовать за ним несколькими сообщениями здесь и там, но не удалось сделать это правильно.

Есть ли у вас какие-либо идеи о том, как это сделать?

ответ

1

В shopping-cart.tpl уберите звонок на заказ-carrier.tpl. Если вы не используете один pagecheckout, в orderController.php, вы должны изменить все перенаправления на шаг 2 (выбор способа доставки), на этап перенаправления 3 Инструменты :: redirect ('index.php? Controller = order & step = 2'); to Tools :: redirect ('index.php? controller = order & step = 3');

3

Bonjour, вот что я сделал

Override AdminOrderPreferencesController и добавить логическое поле конфигурации для переключения этой functionnality

$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 под Preferences> Приказы


Переопределение OrderController и добавьте if в init() способе для установки текущего шага к платежной операции если контроллер inits себя на этапе доставки

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

обойти также проверку проверку CGV на этапе оплаты в initContent() методе ,
Если вы этого не сделаете, 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
В порядке-steps.tpl можно добавить {if not $bypass_shipping_step}...{/if} вокруг четвертого li, чтобы скрыть это, и сделать что-то вроде:

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

или импортировать выделенную таблицу стилей, которая была бы чиста.


Надеюсь, это помогло.

+0

Благодарим за это. это действительно помогает.Тем, кто спрашивает, где должен быть назначен назначенный smarty, я поместил его в конец метода init() в OrderController.php. – nosnevetzy

+0

см. Https://stackoverflow.com/questions/47228469/how-to-remove-delivery-shipping-step-on-prestashop-1-7/48859854#48859854 для версии 1.7 – Flo

 Смежные вопросы

  • Нет связанных вопросов^_^