[Помогите] Доставка в OpenCart 1.5.3.1

Тема в разделе "OpenCart", создана пользователем VeryGood, 9 фев 2013.

  1. VeryGood

    VeryGood

    Регистрация:
    11 дек 2012
    Сообщения:
    216
    Симпатии:
    54
    Подскажите, пожалуйста, как можно (и можно ли) реализовать такое...

    Есть несколько методов доставки:
    1. Госс. почта
    2. Fedex
    3. DHL

    Везде, стоимость доставки зависит от веса. К примеру, первые 500 грамм стоят 10$, следующие 500 грамм уже стоят по 2$. Цены зависят от страны назначения. Соответственно, стоимость у госс. почты дешевле нежели у Fedex или DHL.

    Как можно подобное реализовать, так как в стандартных методах доставки не особо разобрался? Подходящий есть только "Доставка в зависимости от веса", но там везде ставиться только фиксированная стоимость. Или же есть отдельный модуль для этого?
     
  2. Toliamba

    Toliamba

    Регистрация:
    27 янв 2013
    Сообщения:
    191
    Симпатии:
    44
    Я думаю данный модуль вам только заказывать надо так как у Вас в нем будет 3 переменные
    -Служба доставки
    -Вес
    -Страна
    Соответственно для каждой службы доставки надо прописать расценки по весу еще и в зависимости от страны...короче геморойный очень вопрос
     
  3. VeryGood

    VeryGood

    Регистрация:
    11 дек 2012
    Сообщения:
    216
    Симпатии:
    54
    Что, разве нет готовых решений? Практически в любой кмс есть подобное... М-да...
     
  4. Yoda

    Yoda

    Регистрация:
    5 фев 2013
    Сообщения:
    122
    Симпатии:
    22
    Или самому папробовать переделать стандартную доставку. Там вроде не сильно сложно
     
  5. RESER

    RESER

    Регистрация:
    25 янв 2013
    Сообщения:
    172
    Симпатии:
    122
    lда полно готовых решений просто переименовать надо в языковых файлах
     
  6. VeryGood

    VeryGood

    Регистрация:
    11 дек 2012
    Сообщения:
    216
    Симпатии:
    54
    Я тоже подумал работать со стандартным модулем доставки "Доставка в зависимости от веса". Вес указать можно, цену тоже. Для каждого региона можно указать свой тариф.
    Скажите, а как продублировать данный модуль? Ну, то есть этот модуль использовать для разных методов доставки - 1 копию для госс. почты, 2-ая копия для Fedex и т.п.?
     
  7. Yoda

    Yoda

    Регистрация:
    5 фев 2013
    Сообщения:
    122
    Симпатии:
    22
    Нужно клонировать модуль.
     
  8. VeryGood

    VeryGood

    Регистрация:
    11 дек 2012
    Сообщения:
    216
    Симпатии:
    54
    Во-во, клонировать. Боюсь, без конкретных знаний испортить. Не подскажите как сделать?
     
  9. Dotrox

    Dotrox Команда форума

    Регистрация:
    27 ноя 2012
    Сообщения:
    2.051
    Симпатии:
    778
    Вообще в этом модуле цена не фиксированная, она выставляется так: Вес:Цена. То есть, по вашему примеру: .5:10, 1:12
     
  10. Yoda

    Yoda

    Регистрация:
    5 фев 2013
    Сообщения:
    122
    Симпатии:
    22
    Точно не знаю. По-моему просто файлы модуля который нужно склонировать копируются и переименовываются под новым имеенм... Нада пробовать.
     
  11. Dotrox

    Dotrox Команда форума

    Регистрация:
    27 ноя 2012
    Сообщения:
    2.051
    Симпатии:
    778
    Не только, внутри файлов тоже нужно кое-что переименовывать, иначе, как минимум, будет конфликт из-за сохранённых настроек: все модули запишут свои конфиги в БД под одинаковым именем.
     
  12. Yoda

    Yoda

    Регистрация:
    5 фев 2013
    Сообщения:
    122
    Симпатии:
    22
    А конкретно что нужно переименовывать?
     
  13. Dotrox

    Dotrox Команда форума

    Регистрация:
    27 ноя 2012
    Сообщения:
    2.051
    Симпатии:
    778
    В admin/controller/shipping/weight.php есть строчка:
    Код:
    $this->model_setting_setting->editSetting('weight', $this->request->post);
    'weight' - это имя модуля, нужно заменить на своё, чтоб настройки записались под уникальным именем.

    В catalog/model/shipping/weight.php нужно найти и заменить все 'weight_', подчёркивание сохранить.

    А вообще, я обычно при клонировании модулей просто прохожу реплейсом по всем файлам модуля и заменяю все упоминания имени модуля на свои, что гарантирует 100%-е отсутствие конфликтов!
     
    VeryGood и Yoda нравится это.
  14. Yoda

    Yoda

    Регистрация:
    5 фев 2013
    Сообщения:
    122
    Симпатии:
    22
    Дотрох, спасибо, попробую другие модули склонировать. Тоже несколько нужно было как у ТС
     
  15. VeryGood

    VeryGood

    Регистрация:
    11 дек 2012
    Сообщения:
    216
    Симпатии:
    54
    Насколько понимаю, для того чтобы склонировать модуль (в данном случае модуль доставки), необходимо создать копии файлов admin/controller/shipping/weight.php и catalog/model/shipping/weight.php, переименовать и заменить в них "weight" на необходимое название? В результате данных действий, создастся клон под другим именем? И это все? Больше никаких манипуляций делать не нужно?
     
  16. RESER

    RESER

    Регистрация:
    25 янв 2013
    Сообщения:
    172
    Симпатии:
    122
    во всех файлах нужно менять в самом файле то как он назывался на новое задание примерно до 50 замен во всех файлах можно и автоматом все поменять через dreamweawer
     
  17. Dotrox

    Dotrox Команда форума

    Регистрация:
    27 ноя 2012
    Сообщения:
    2.051
    Симпатии:
    778
    Это минимальный набор действий. Нужно ещё как минимум в admin/language/russian/shipping/weight.php вписать в переменную $_['heading_title'] новое название для модуля, иначе будет два модуля с одинаковым именем.
    А вообще, желательно склонировать и файл отображения admin/view/template/shipping/weight.tpl, и вписать новое имя для него в admin/controller/shipping/weight.php в строке $this->template = 'shipping/weight.tpl'
    Это необязательно, но иначе склонированный модуль будет использовать один и тот же файл отображения с оригинальным. Правда, проблемой это станет только, если оригинальный модуль будет целиком удалён.
     
  18. Yoda

    Yoda

    Регистрация:
    5 фев 2013
    Сообщения:
    122
    Симпатии:
    22
    Вобщем, и то что клиенту отображается и админку модуля клонировать нужно. А потом пройтись по файлам с текстом для модулей и там поменять название
     
  19. VeryGood

    VeryGood

    Регистрация:
    11 дек 2012
    Сообщения:
    216
    Симпатии:
    54
    В общем, попробовал я следующим методом:
    1) admin/controller/shipping/ файл weight клонировал назвав клон china
    2) в этом файле china поменял все значения с weight на china
    3) /admin/language/russian/shipping/ то же самое проделал
    4) catalog/language/russian/ то же самое
    5) catalog/model/shipping/ то же самое
    6) admin/view/template/shipping/ то же самое

    В итоге, в админке появился новый модуль, который вкл. и выкл., настраивается.
    Однако, при заказе товара, когда доходит до выбора метода доставки, появляется ошибка:
     
  20. Dotrox

    Dotrox Команда форума

    Регистрация:
    27 ноя 2012
    Сообщения:
    2.051
    Симпатии:
    778
    Желательно ещё понимать за что отвечает каждая строчка, когда что-то правите. Вы лишнее исправили. Название оригинального модуля необдуманно названо "Вес" (в переводе с английского), потому оно совпало с методом определения веса товаров в корзине.

    В catalog\model\shipping\china.php у вас, по идее, строчка такого вида:
    Код:
    $weight = $this->cart->getchina();
    или вместо переменной $weight у вас тоже $china, но это не имеет значение если дальше по файлу везде переименованно. А вот метод нужно переименовать обратно:
    Код:
    $weight = $this->cart->getWeight();
    У модулей доставки нет файлов отображения в клиентской части.