Автор Тема: Добавить свою панельку управления  (Прочитано 748 раз)

19 Июль 2017, 21:11:33
  • Старожил
  • ****
  • Сообщений: 259
  • Репутация: +2/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Здравствуйте.
Хочу сделать следующее:
Для более удобной фильтрации заказов добавить свою панельку с кнопками по образу панельки kpi и расположенную под ней (под kpi).
как создать tpl файл понимаю, а вот как её "подключить" чего-то совсем мозг не работает.
 
20 Июль 2017, 11:08:01
Ответ #1
  • Модератор
  • Ветеран
  • *****
  • Сообщений: 86688
  • Репутация: +25428/-0
  • Сообщество PrestaShop
    • Просмотр профиля
С помощью модуля можно заменить стандарный шаблон на свой или создать новый. Создаете контроллер /mymodule/controllers/admin/
class AdminMyModuleController extends ModuleAdminControllerВ нем определяете поля шаблона и создаете свой шаблон /mymodule/views/templates/admin/
26 Июль 2017, 23:45:15
Ответ #2
  • Старожил
  • ****
  • Сообщений: 259
  • Репутация: +2/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Панельку добавил, кнопки для фильтрации разместил, через ajax в контроллер передаю параметры для фильтрации заказов, для примера самый простой случай:
'current_state = 1'
А вот "прикрутить" это условие к фильтрации и после этого обновить страницу никак не получается.
Обновить-то получается, но конструкция типа
$this->_where = ' AND current_state = 1';
ничего не меняет - фильтр не работает.
Не правильной дорогой иду?


27 Июль 2017, 09:54:55
Ответ #3
  • Ветеран
  • *****
  • Сообщений: 1614
  • Репутация: +32/-1
  • Сообщество PrestaShop
    • Просмотр профиля
'filter_key' => 'переменная фильтра'Фильтр определяют при формировании fields_list.
Специально запрос писать не обязательно.
27 Июль 2017, 14:35:30
Ответ #4
  • Старожил
  • ****
  • Сообщений: 259
  • Репутация: +2/-0
  • Сообщество PrestaShop
    • Просмотр профиля
'filter_key' => 'переменная фильтра'Фильтр определяют при формировании fields_list.
Специально запрос писать не обязательно.
Этот способ подходит если нужно отфильтровать по одному значению поля, т.е.
where current_state = 1
или
where current_state = 5
мне же нужно получить
where current_state = 1 or current_state = 5 or current_state = 7

Я просто тренируюсь на самом простом примере:
public function ajaxProcesssetMyOwnFilter()
  {
     $filter_value = (int)Tools::getValue('filter_value');
     $this->_filter = 'and current_state = '.$filter_value;
     Tools::redirectAdmin(self::$currentIndex.'&token='.$this->token.'&submitFilterorder=1');
  }
Проблема в том, что редирект не происходит. Уже 3 часа танцую вокруг этих трех строк.
27 Июль 2017, 15:13:05
Ответ #5
  • Ветеран
  • *****
  • Сообщений: 3419
  • Репутация: +79/-6
  • Сообщество PrestaShop
    • Просмотр профиля
Зачем редирект с Ajax? Данные обновятся без перезагрузки.
27 Июль 2017, 15:17:24
Ответ #6
  • Старожил
  • ****
  • Сообщений: 259
  • Репутация: +2/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Зачем редирект с Ajax? Данные обновятся без перезагрузки.
После обновления со стороны скрипта
location.reload();
условия фильтра
$this->_filter = 'and current_state = '.$filter_value;
игнорируются
27 Июль 2017, 15:39:48
Ответ #7
  • Ветеран
  • *****
  • Сообщений: 1614
  • Репутация: +32/-1
  • Сообщество PrestaShop
    • Просмотр профиля
'filter_key' => 'переменная фильтра'Фильтр определяют при формировании fields_list.
Специально запрос писать не обязательно.
Этот способ подходит если нужно отфильтровать по одному значению поля, т.е.
where current_state = 1
или
where current_state = 5
мне же нужно получить
where current_state = 1 or current_state = 5 or current_state = 7

Я просто тренируюсь на самом простом примере:
public function ajaxProcesssetMyOwnFilter()
  {
     $filter_value = (int)Tools::getValue('filter_value');
     $this->_filter = 'and current_state = '.$filter_value;
     Tools::redirectAdmin(self::$currentIndex.'&token='.$this->token.'&submitFilterorder=1');
  }
Проблема в том, что редирект не происходит. Уже 3 часа танцую вокруг этих трех строк.
Фильтровать можно по многим значениям. Вы сами определяете функции выборки данных. Определили переменную для фильтров и создали запрос
$filter_ids[] = Tools::getValue('filter_id');
...
$sql .= WHERE `current_state` IN (  // циклом из массива получить индексы
27 Июль 2017, 16:11:05
Ответ #8
  • Ветеран
  • *****
  • Сообщений: 16667
  • Репутация: +14630/-5
  • Сообщество PrestaShop
    • Просмотр профиля
Фильтровать можно по многим значениям. Вы сами определяете функции выборки данных. Определили переменную для фильтров и создали запрос
$filter_ids[] = Tools::getValue('filter_id');
...
$sql .= WHERE `current_state` IN (  // циклом из массива получить индексы
В дефолтной теме админки нельзя.
Поля фильтров не разрешают выбор множества значений.


мне же нужно получить
where current_state = 1 or current_state = 5 or current_state = 7
Не поддерживается такая функция в prestashop. Для переменной фильтра только одно значение.
27 Июль 2017, 17:12:04
Ответ #9
  • Старожил
  • ****
  • Сообщений: 259
  • Репутация: +2/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Не поддерживается такая функция в prestashop. Для переменной фильтра только одно значение.
Конструкция
        $this->_orderBy = 'id_order';
        $this->_orderWay = 'DESC';
        $this->_use_found_rows = true;
$this->_filter = 'and (current_state = 17 or current_state = 4)';
в конструкторе контроллера прекрасно работает
Но мне значение $this->_filter нужно менять динамически по нажатию нужных кнопок пользователем