Помогите изменить формы вывода клиентов в админке

Тема в разделе "PrestaShop", создана пользователем weberus, 9 сен 2019.

Информация :
Приветствую гость, обрати внимание! Темы которые закреплены в разделах, в скором времени будут откреплены. Правила раздела PrestaShop

(Не актуальные темы) Каталоги:Модули PrestaShop 1.7Модули PrestaShop 1.5 - 1.6Шаблоны PrestaShop 1.7Шаблоны PrestaShop 1.5 - 1.6
(Не актуальные темы) Поиск / Запросы:Модули PrestaShop 1.7Модули PrestaShop 1.5 - 1.6Шаблоны PrestaShop 1.7Шаблоны PrestaShop 1.5 - 1.6
Полезная информация:Поддержка и помощь c PrestaShopУбираем ПрестаТраст, стучалки и прочую рекламуСовместные покупки модулей и шаблоновПеревод Prestashop и модулей
Модераторы: trace
  1. weberus

    weberus Создатель

    Регистр.:
    30 мар 2016
    Сообщения:
    48
    Симпатии:
    15
    День добрый.
    Появилась необходимость добавить еще одну таблицу с значением группа в разделе управление клиентами.
    Может кто реализовывал, прошу помочь, версия 1.7.
     
    Последнее редактирование: 10 сен 2019
  2. genokby

    genokby Постоялец

    Регистр.:
    15 янв 2013
    Сообщения:
    113
    Симпатии:
    70
    решение для 1.6:
    controllers/admin/AdminCustomersController.php
    $this->_join =
    'LEFT JOIN '._DB_PREFIX_.'customer_group cg ON (a.id_customer = cg.id_customer)
    LEFT JOIN '._DB_PREFIX_.'group_lang g ON (cg.id_group = g.id_group AND g.id_lang = '.(int)$this->context->language->id.')

    LEFT JOIN '._DB_PREFIX_.'gender_lang gl ON (a.id_gender = gl.id_gender AND gl.id_lang = '.(int) $this->context->language->id.')';
    и
    'connect' => [
    'title' => $this->l('Last visit'),
    'type' => 'datetime',
    'search' => false,
    'havingFilter' => true,
    ],
    'group_name' => [
    'title' => $this->l('Group'),
    'filter_key' => 'g!name',
    ],

    ]
    );
    добавить то что выделено
     
    InMix, weberus, PrestaLord и 2 другим нравится это.
  3. zen1

    zen1

    Регистр.:
    6 дек 2016
    Сообщения:
    898
    Симпатии:
    1.701

    Hi you can put the file edit :ay:
     
  4. weberus

    weberus Создатель

    Регистр.:
    30 мар 2016
    Сообщения:
    48
    Симпатии:
    15
    Спасибо за ответ, ступил не указав версию, мне нужно под 1.7
     
  5. genokby

    genokby Постоялец

    Регистр.:
    15 янв 2013
    Сообщения:
    113
    Симпатии:
    70
    This is an override for thirtybees, I think 1.6 is fine too
    1.7 даже не ставил поэтому тут не сильно помогу, посмотри файлы CustomerGridDefinitionFactory.php и CustomerQueryBuilder.php, но это не точно
     

    Вложения:

    Последнее редактирование: 10 сен 2019
    zen1 нравится это.
  6. weberus

    weberus Создатель

    Регистр.:
    30 мар 2016
    Сообщения:
    48
    Симпатии:
    15
    У кого еще какие варианты?
     
  7. Quant

    Quant Создатель

    Регистр.:
    22 май 2013
    Сообщения:
    26
    Симпатии:
    44
    Тут можно через прямую правку файлов CustomerQueryBuilder.php и CustomerGridDefinitionFactory.php - в первом определяешь SQL во втором столбец для вывода.
    См. - https://devdocs.prestashop.com/1.7/development/components/grid/
    https://devdocs.prestashop.com/1.7/modules/concepts/
    Но лучше использовать модули (т.е. хуки), за пример взять - https://github.com/FuenRob/Modules-Prestashop-1.7/tree/master/addcolumninlist
     
    _sashok нравится это.
  8. weberus

    weberus Создатель

    Регистр.:
    30 мар 2016
    Сообщения:
    48
    Симпатии:
    15
    В этом файле все понятно CustomerGridDefinitionFactory.php , а вот с запросом все ни как не получается вытянуть, help
     
  9. genokby

    genokby Постоялец

    Регистр.:
    15 янв 2013
    Сообщения:
    113
    Симпатии:
    70
    проверить мне негде, но думаю как-то так:
    Код:
        /**
         * [USER=314738]@param[/USER] SearchCriteriaInterface $searchCriteria
         *
         * [USER=273296]@Return[/USER] QueryBuilder
         */
        private function getCustomerQueryBuilder(SearchCriteriaInterface $searchCriteria)
        {
            $queryBuilder = $this->connection->createQueryBuilder()
                ->from($this->dbPrefix . 'customer', 'c')
                ->leftJoin(
                    'c',
                    $this->dbPrefix . 'customer_group',
                    'cg',
                    'c.id_customer = cg.id_customer'
                )
                ->leftJoin(
                    'c',
                    $this->dbPrefix . 'group_lang',
                    'g',
                    'cg.id_group = g.id_group AND g.id_lang = :context_lang_id'
                )
                ->leftJoin(
                    'c',
                    $this->dbPrefix . 'gender_lang',
                    'gl',
                    'c.id_gender = gl.id_gender AND gl.id_lang = :context_lang_id'
                )
     
    Последнее редактирование модератором: 12 сен 2019 в 20:06
    _sashok нравится это.
  10. weberus

    weberus Создатель

    Регистр.:
    30 мар 2016
    Сообщения:
    48
    Симпатии:
    15
    Чета все ни как сделал так
    Код:
        private function getCustomerQueryBuilder(SearchCriteriaInterface $searchCriteria)
        {
            $queryBuilder = $this->connection->createQueryBuilder()
                ->from($this->dbPrefix . 'customer', 'c')
                ->leftJoin(
                    'c',
                    $this->dbPrefix . 'gender_lang',
                    'gl',
                    'c.id_gender = gl.id_gender AND gl.id_lang = :context_lang_id'
                )
                ->leftJoin(
                    'c',
                    $this->dbPrefix . 'shop',
                    's',
                    'c.id_shop = s.id_shop'
                )
                ->leftJoin(
                    'c',
                    $this->dbPrefix . 'customer_group',
                    'cg',
                    'c.id_customer = cg.id_customer'
                )
                ->leftJoin(
                    'c',
                    $this->dbPrefix . 'group_lang',
                    'g',
                    'cg.id_group = g.id_group AND g.id_lang = :context_lang_id'
                )           
                ->where('c.deleted = 0')
                ->andWhere('c.id_shop IN (:context_shop_ids)')
                ->setParameter('context_shop_ids', $this->contextShopIds, Connection::PARAM_INT_ARRAY)
                ->setParameter('context_lang_id', $this->contextLangId);
    
            $this->applyFilters($searchCriteria->getFilters(), $queryBuilder);
    
            return $queryBuilder;
        }
     
    _sashok нравится это.