Перейти к публикации
Поиск в
  • Дополнительно...
Искать результаты, содержащие...
Искать результаты в...

eugenex

Новичок
  
  • Публикаций

    15
  • Зарегистрирован

  • Посещение

Все публикации пользователя eugenex

  1. Вот тут описано, как вывести модуль в произвольной позиции: https://opencartforum.com/topic/2084-позиция-модулей/?do=findComment&comment=108407 Я пробовал - получилось(кроме добавления модуля в админку).
  2. Дублируется меню на странице аккаунта, то есть /index.php?route=account/account Проблема наблюдается только на хостинге, в локальной копии сайта её нет. Приложил скриншоты страницы с дублированием меню и без него. account.tpl идентичные - заменил account.tpl на хостинге своим с локалхоста, ничего не изменилось. Но за формирование страницы аккаунта отвечает именно этот шаблон - это я проверил. Но значит не только он. Используется вот этот шаблон opencart: http://www.templatemonster.com/opencart-templates/53451.html Opencart 2.0.1.0
  3. Получилось до добавления в админку. Добавление в админку наверное требуется актуализировать. Я использую Opencart 2.0.1.0 и у меня нет в admin/view/template/module/название.tpl кода <?php if ($module['position'] == 'content_top') { ?> Если кто-то знает, как это делается в 2.0.1.0, напишите плз. Если найду сам - напишу.
  4. Устанавливаю вот эту тему: http://www.templatemonster.com/opencart-templates/53451.html На Opencart 2.0.1.0. Локально установилась без проблем. На хостинге После перехода на site/unzip.php и попытки распаковки архива theme533(update).zip появляется вместо списка распакованных файлов сообщение: Устанавливаю по этой инструкции(update installation): http://www.templatemonster.com/help/quick-start-guide/opencart-templates/v1-1/index_en.html#template-installation Файлы заливаю через WinSCP.
  5. Да, нашел там $('#option-' + option_row).trigger('click'); Его и ловлю.
  6. Нет, не проверял. Интересно с точки зрения общего развития. У меня как раз функционал только для админки. А вот что действительно важно: нужно тот ajax -запрос выполнять при выборе опции в автокомплитере при редактировании товара. То есть, запрос должен выполняться, когда новая опция, которую выбрали в автокомплитере появляется в списке над автокомплитером. Не найду, что за событие и на каком элементе там отлавливать.
  7. А если не только для администратора, тогда как?
  8. Все-таки неправильно формировал url, А правильно так: $this->url->link('module/related_options', 'token='.$this->session->data['token']); Только потом еще пришлось вырезать "amp;" который зачем-то вставляется, причем не вместо "&", а после него) Теперь работает.
  9. Урл контроллера я указал, но проблемы остались. JS выглядит сейчас так: $("#mastop").live("change", function() { alert('change'); $.ajax({ url: "/admin/index.php?route=module/related_options&token=2e2687166c3a2ae113844508b9a447c3", type: 'get', data: { option_req: 'option_req' }, success: function(content) { alert(content); }, error: function() { alert('error'); } }); }); А обработчик в контроллере так: if (isset($this->request->get['option_req'])) { $this->template = 'module/related_options_item.tpl'; echo $this->render(); die; } url сейчас подставляется такой: /admin/index.php?route=module/related_options&token=2e2687166c3a2ae113844508b9a447c3 Если я его вставляю в адресную строку браузера, то обработчик запроса выполняется, а вот из ajax по-прежнему нет. При этом коллбэк success вызывается, но в параметре content что-то совершенно не то, возможно 404 страница Денвера. Факт попадания в блок if (isset($this->request->get['option_req'])) проверяю логированием.
  10. Нет, модуль имеет свой контроллер в папке admin/controller/module. Обработчик ajax запросов я в нем написал.
  11. Я уже понял свою основную ошибку. Раньше я работал с модулем такой структуры, которая не требовала указания url в функции $.ajax. Сейчас скрипт, выполняющий ajax-запросы находится в файле vqmod\xml\имя_модуля.xml и url нужно указать явно. То есть, вопрос на самом деле в том, как определить url контроллера.
  12. Есть модуль, работающий при установленном vqmod. Требуется выполнить ajax-запрос к контроллеру модуля. Post-запрос до контроллера не доходит, потому что не проходит валидацию в vqmode/vqcache/vq2-admin_controller_catalog_product.php. Там ожидается параметр product_description содержащий ассоциативный массив. Если выполнять get-запрос, то в контроллере условие if (isset($this->request->get['option_req'])) где я его должен обработать не выполняется. В ответе сервера возвращается страница целиком, вместе с верхним меню. Что нужно сделать, чтобы при установленном vqmod ajax-запросы выполнялись как обычно?
  13. Да, так конечно не получилось бы. Упростил шаблон до <?php foreach ($options_list as $option) { ?> <?php foreach ($option["option_value"] as $value) { ?> <li class="zfilter_option" option_name="<?php echo $value["name"]; ?>" sort_order="<?php echo $value["sort_order"]; ?>"> - <?php echo $value['name']; ?> </li> <?php } } ?> То есть просто вывод списка полученных <li>. Потом в javascript перебираю их, сравниваю атрибут sort_order у Ul и у LI, и если они равны, добавляю LI в UL. Теперь отображается верно.
  14. Пишу дополнение - фильтр по опциям. Опции и их значения выводятся списком друг под другом. Нужно чтобы при выборе значения опции доступные значения нижележащих опций обновлялись. На данный момент получается следующее: при выборе верхней опции значения двух нижележащих обновляются причем доступные значения правильные. Но под каждой опцией выводится список доступных значений обоих опций, а не только этой конкретной опции. Выглядит это так: Код шаблона: <?php foreach ($options_list as $option) { ?> <li class="zfilter_category"> <?php foreach ($option["option_value"] as $value) { if ($option["sort_order"] == $value["sort_order"]) { ?> <ul> <li class="zfilter_option" option_name="<?php echo $value["name"]; ?>" sort_order="<?php echo $value["sort_order"]; ?>"> - <?php echo $value['name']; ?> </li> </ul> <?php } } ?> </li> <?php } ?> JS обрабатывающий выбор значения опции $(".zfilter_option").each(function(index, el) { var sort_order = $(el).attr('sort_order'); if (sort_order > option.order) { $.ajax({ type: 'post', data: { update_option: option.name, sort_order: option.order }, success: function(content) { $(el).parent().html(); $(el).parent().html(content); }, error: function() { scope.hideMask(); } }); } }); В параметре content передается заполненный вышеприведенный шаблон. Код контроллера, обрабатывающий выбор опции if (isset($this->request->post["update_option"])) { $option_value = $this->request->post["update_option"]; $sort_order = $this->request->post["sort_order"]; $products = $this->model_module_zfilter->getProductsByOptionValue($option_value, $language_id); $products_id = array(); foreach ($products as $product) { $products_id[] = $product['product_id']; } $options = $this->model_module_zfilter->getProductsOptions($products_id, $sort_order);//array(); ?> <?php $this->template = 'default/template/module/zfilter_option_item.tpl'; $this->data['options_list'] = $options; // Отрисовка echo $this->render(); die; } В $this->data['options_list'] находится данные со структурой, которая заполняется так foreach ($product_option_query->rows as $product_option) { foreach ($product_option_value_query->rows as $product_option_value) { $product_option_value_data[] = array( 'name' => $product_option_value['name'], 'sort_order' => $product_option_value['sort_order'] ); } $product_option_data[] = array( 'option_value' => $product_option_value_data, 'sort_order' => $product_option['sort_order'] ); } Данные выбираются правильно. Проблема, видимо, в шаблоне. Исходный вид фильтра, до того, как выбрана опция:
×
×
  • Создать...

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.