Карта ПВЗ на странице способов доставки Есть решение
Господа, только не спешите кидать грязными тряпками :)
Помогите, пожалуйста разобраться, как вывести произвольный HTML код (к примеру карту ПВЗ) в нужном месте на страницу /checkout/shipping из плагина доставки?
Следуя инструкциям, делаю два метода (оба в основном классе плагина):
1. Описываю HTML код контрола:
public static function getMapControl($name, $params = array()) { waHtmlControl::addNamespace($params, $name); $control = '<div id="my-control">'; $control .= ........ ; $control .= '</div>'; $control .= <<<JS <script type='text/javascript'> .......... </script> JS; return $control; }
2. регистрирую и, вроде бы, добавляю во view:
public function execute() { $plugin_id='moipvz'; $namespace = 'shipping_'.$plugin_id; $params=array(); $params['id'] = $plugin_id; $params['namespace'] = $namespace; $params['title_wrapper'] = '%s'; $params['description_wrapper'] = '<br><span class="hint">%s</span>'; $params['control_wrapper'] = '<div class="name">%s</div><div class="value">%s %s</div>'; $params['name'] = 'moipvzymap'; $params['title'] = 'Какой-то тайтл'; $params['description'] = 'Какое-то описание'; $myCallback=array('moipvzShipping', 'getMapControl'); //Основной класс плагина: 'moipvzShipping' waHtmlControl::registerControl('Moipvzymap', $myCallback); wa()->getView()->assign('moipvzymap', waHtmlControl::getControl('Moipvzymap', 'moipvzymap', $params)); }
в итоге ошибок нет, стоимость рассчитывается правильно, но и карты нигде нет, даже тегов, от врапперов нет в HTML коде страницы.
Пробовал принудительно вызывать execute() из функции calculate(), пробовал создавать для нее экшен в отдельных файлах:
/moipvz/lib/actions/moipvzFrontendShipping.action.php (class moipvzFrontendShippingAction extends waViewAction)
с экшенами перебрал 3 или 4 варианта именования и безрезультатно.
Может есть где чуть более развернутое описание такой задачи с чуть более полными примерами?
Заранее большое спасибо за помощь!
Эта тема в архиве. Добавление комментариев к ней отключено.
1 ответ
Кажется, нашел решение.
нужно вызывать через customFields(waOrder $order) вместо execute().
Во тут, еще в лохматом 2013 поднимался этот вопрос
http://old.webasyst.ru/forum/viewtopic.php?id=2003...
Тем не менее, если кто-то захочет поделиться более кошерным решением - милости прошу :)