Автор Тема: как дебажить и нужно сделать несколько модулей из одного?  (Прочитано 914 раз)

20 Ноябрь 2015, 17:17:13
  • Новичок
  • *
  • Сообщений: 43
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Приветствую

1. возникла необходимость при оплате наличными курьеру добавлять процент. нашёл модуль подходящий для этого - http://prestahost.eu/prestashop-modules/en/home/27-cash-on-delivery-plus-for-prestashop.html бесплатный, но он добавляет фиксированную сумму. мне нужен процент. Я всё сделал, но там есть функция проверки соответствия суммы заказа и оплаты и выходит ошибка. Понять почему сложно. Хочется посмотеть значения переменных. КАК ДЕБАЖИТM В PHP? подскажите пожалуйста

2. мне надо будет этот модуль сделать для 3х разных вариантов доставки с разными вариантами процентов. Правильно было бы сделать соответствие способа доставки и процента, но я не потяну :) я переименовал модуль, но мой и родной перетирают переменный друг друга. Мне и переменные переделывать или я что-то упустил?
20 Ноябрь 2015, 20:55:20
Ответ #1
  • Ветеран
  • *****
  • Сообщений: 86688
  • Репутация: +25428/-0
  • Сообщество PrestaShop
    • Просмотр профиля
23 Ноябрь 2015, 01:11:21
Ответ #2
  • Новичок
  • *
  • Сообщений: 43
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
1. включение режима debug даёт много инфомрации, но смотреть переменные не позволяет. Я думал о какой-н инструкции как засунуть сайт с prestashop в любое IDE, чтобы иметь возможность сделать точку останова и всё посмотреть спокойно...
кажется нашёл:
In NetBeans:
- New Project
- PHP Application with Existing Sources
- Sources Folder: locate your PrestaShop installation folder
- Set Project URL if needed
Finally install Smarty Framework plugin in NetBeans.

Неужели всё так просто? :)
2. сделал всё. только не понял фразу "Удалить ненужные хуки"
в моём варианте не нужных нет вроде... но свистопляска с хуком в payment есть... работает нормально только один модуль, то не второй нет... елси интересно, то вот здесь подробнее http://prestashop-forum.ru/index.php/topic,5556.0.html
23 Ноябрь 2015, 10:35:02
Ответ #3
  • Ветеран
  • *****
  • Сообщений: 86688
  • Репутация: +25428/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Дебаггер есть во всех современных ide. Если пользуетесь NetBeans, то можете создать проект в ней. Мне больше нравится PhpStorm.
Проблемы с хуком могут быть только в 2-х случаях
- одно название шаблона, тогда при кешировании вывлдит одтин шаблон
- одинаковые навзания глобальных переменных.
23 Ноябрь 2015, 12:03:43
Ответ #4
  • Новичок
  • *
  • Сообщений: 43
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
- все файлы tpl поменял
- в названии переменных добавил цифру

такое ощущение, что после вызова метода получающего список поставщиков происходит какая-то ерунда.
23 Ноябрь 2015, 12:30:56
Ответ #5
  • Ветеран
  • *****
  • Сообщений: 16670
  • Репутация: +14630/-5
  • Сообщество PrestaShop
    • Просмотр профиля
23 Ноябрь 2015, 12:59:04
Ответ #6
  • Новичок
  • *
  • Сообщений: 43
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
поменял... но это ж внутри классовая переменная. в любом случае - эффекта нет
//если отклюсить эту проверку блок показывается всё время
if(!$this->isAllowedCarrier((int)$this->getCarrierId($params))) return false;

//ниже сами функции
    protected function getCarrierId($params) {
       if((int) $params['cart']->id_carrier)
          return (int) $params['cart']->id_carrier;

          $option=$this->context->cart->getDeliveryOption(null, false);
           if(is_array($option)) {
             $vals=array_values($option);
             return (int)$vals[0];
           }
    }

       protected function isAllowedCarrier($id_carrier) {
      if(!is_array($this->allowed_carriersCOD4) || !count($this->allowed_carriersCOD4))
        return true;
    if(in_array($id_carrier, $this->allowed_carriersCOD4))
          return true;
    return false;
    }
функции. работают вроде нормально. Я пока IDE не поставил, чтобы проверить изменения переменных, но одноразовый вывод переменных показывает, что значения передаются правильно.. да и ощибиться тут не где :(
23 Ноябрь 2015, 13:14:10
Ответ #7
  • Новичок
  • *
  • Сообщений: 43
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
похоже нашёл проблему. она возникает, если стоимость доставки равна нулю.
23 Ноябрь 2015, 13:18:37
Ответ #8
  • Ветеран
  • *****
  • Сообщений: 3419
  • Репутация: +79/-6
  • Сообщество PrestaShop
    • Просмотр профиля
Тогда делай проверку и исключай бесплатную доставку.