msPriceList - Управление прайс-листами minishop2

Экспорт прайс-листов в XLSX с неограниченным количеством категорий и товаров.
Компонент умеет создавать прайс-листы в формате XLSX с категориями и товарами с поддержкой многоуровневого древовидной навигацией по файлу. Можно создавать сколько угодно прайс-листов и давать их скачивать пользователями.




Пример выгрузка всех категорий
Каталог.xlsx

Пример выгрузка нескольких категорий
Электронные товары и Телефония.xlsx

Возможности


  • Создание неограниченное количество прайс-листов
  • Многоуровневая навигация в файле XLSX
  • Добавление своего логотипа в файле XLSX
  • Добавление контактной информации в файле XLSX
  • Добавление даты формирования прайс-листа в файле XLSX
  • Управление колонками в xlsx файле. Возможно передвигать, задавать названия, создание свободных колонок
  • Вывод сниппета на сайте для скачивания для пользователе.
  • Возможность задать имя для файла в чанке для вывода прайс-листов
  • Поддержка огромных каталогов, так как выгрузка происходит пакетно, можно выгрузить до 100 000 категорий и товаров
  • Плагины и события для управления стилями и данными для выгрузки
  • Возможно задать отступы от верхней части, возможность отключить или включить: логотип, текст в шапке, дату формирования прайс-листа, наименование колонок
  • Установка крон заданий
  • Быстрый старт, вам нужно будет установить только id родительской категории для выгрузки

Быстрый старт


По умолчанию будет создан прайс-лист с нужными настройками. Вам необходимо указать только id категори или категорий через запятую.

Для начала работы необходимо зайти в раздел компонента



Выбрать редактирование и указать id родительской категории


Выбрать Экспортировать прайс-лист и дождаться пока консоль не вернет ссылку на ваш прайс-лист.
После этого скачиваем прайс-лист.


Сниппет msPriceList


Для вывода прайс-листов на фронтенд необходимо в любом месте на сайте разместить сниппет msPriceList
{$modx->runSnippet('msPriceList')}


Настройка колонок


Можно добавлять новые колонки как со значениями из полей с товаров так и свободных колонок (например колонка заказ, для того чтобы заказчик мог указать количество заказываемых товаров).

Возможности:
  • Наименование колонки
  • Системное имя для колонки
  • Поля со значением — ключ поля из msProduct (например price, old_price)
  • Задать ширину колонки
  • Задать расположения текста: Выравнивание по горизонтали, Выравнивание по вертикали
  • Установка ключа для словарей, так можно добавить дополнительное значение в ячейку:
    $_lang['mspricelist_price_currency'] = '[[+value]] руб.';
    вернет 54 руб.
  • Выделить текст жирным


Настройки


Возможность задавать настройки на странице с компонентом.
  • Можно добавить свой логотип и задать ему размер и расположения логотипа в файле
  • добавлять текст — при добавлении учитывается перенос. Каждый перенос это следующая строка. Можно задать колонку куда будет помещаться текст или вообще можно отключить вывод
  • добавлять дату формирования прайс-листа — назначение ячейки куда запишется дата
  • Цвета для категорий — можно задать свой цвет для уровней категорий


Идея сделать такой прайс-лист уже давно была, так как когда то со своим другом(программистом по 1С) делали сайт в связке с 1С, и так же он сделал чтобы формировался прайс-лист подобного формата и ежедневно отправлялся на сайт. Вывели ссылку на файл в шапке для того чтобы клиенты могли скачивать и видеть наличие товаров на складах и делать заказы, с последующей отправкой на email.
В 1С с формированием прайс-листов вообще как таковой проблемы нету, а вот на сайтах с этим проблема...


События для плагинов


Добавлены события для добавления своих данных и управления стилями прайс-листов.

Событие msPriceListAfterSetStyle
Добавление стилей для колонки или только для одной ячейки

<?php
/* @var PHPExcel_Style $style */
/* @var array $resource */
/* @var string $column_key */
if ($resource['class_key'] == 'msProduct' and $column_key == 'price') {
    if ($object = $modx->getObject('msProductData', $resource['id'])) {
        if ($object->get('new')) {
            $style->getFont()->setBold(true);
        }
    }
}

Событие msPriceListBeforeSetLogo
Установка координат или других параметров для логотипа в прайс-листе
<?php
/* @var PHPExcel_Worksheet_Drawing $objDrawing */

    $objDrawing->setName('Торговые технологии'); // Имя сайта
    $objDrawing->setDescription('Текст'); // Описание для логотипа
    $objDrawing->setPath('/home/s10000/www/inc/images/logo.png'); // Полный путь на сайте к логотипу
    $objDrawing->setCoordinates('A1'); // в какую ячейку вставить

    //setOffsetX works properly
    $objDrawing->setOffsetX(15); // отступ с верху
    $objDrawing->setOffsetY(15); // отступ с боку

    //set width, height
    $objDrawing->setWidth(400); // ширина логотипа
    $objDrawing->setHeight(83); // Высота логотипа

Событие msPriceListBeforeSetText
Установка стилей для текста
<?php
/* @var PHPExcel_Style $style */
 $style->getFont()->setBold(true);

Событие msPriceListBeforeSetTextPrice
Установка стилей для даты формирования прайс-листа
<?php
/* @var PHPExcel_Style $style */
 $style->getFont()->setBold(true);


Стоимость компонента 1790 руб.
https://modstore.pro/packages/import-and-export/mspricelist
Андрей Степаненко
22 февраля 2019, 13:52
modx.pro
2
608
+11
Поблагодарить автора Отправить деньги

Комментарии: 9

Дмитрий
22 февраля 2019, 16:26
+2
Красота-то какая! Лойс, респектос, все дела
    Vlad Brise
    23 февраля 2019, 22:08
    0
    Андрей, ты просто нескончаемый генератор идей, как у тебя это получается? Делись секретами :D
    Дополнение крутое, молодец :)
      Андрей Степаненко
      23 февраля 2019, 22:22
      0
      Дак яж в статье написал как))

      А так вообще экспериментами. Вот взять компонент ExportUser, вбухал кучу времени) а толку нету (только экспириенс)) за исключением msExportOrdesExecel, в нем хоть какую то задачу удалось решить.
      Да собственно вообще возможность многоуровневой навигации в виде дерева в первые в нем реализовал.
      В общем без этих двух компонентов не получилось бы сделать этот))
        Андрей Степаненко
        23 февраля 2019, 22:36
        0
        Хотя вру, ещё часть функционал взята из scannerModx — консоль процесса экспорта

        Рутины много, думаю что в большинстве случаев это и сдерживает на придумывания каких то идей.

        В помощь приходят другие компоненты:
        siteDev — там вообще фэншуй для создания компонентов
        msDemoData — в примере этого компонента как раз и есть товары от туда

        Ну и естественно miniShop2, pdoTools

        В общем без юзанья всего этого, сложновато как то заниматься разработкой компонентов
          Vlad Brise
          23 февраля 2019, 23:57
          0
          Я постоянно сталкиваюсь с задачами, решаю их и думаю, блин а как же круто было написать дополнение на основе этого, а потом смотрю, уже это придумали давным — давно. Единственное на что меня хватает, так это на какие-то готовые мини решения, которые я здесь публикую. А вообще я восхищаюсь, штамповать такое количество дополнение почти каждую неделю, это еще нужно постараться, респект, короче, есть на кого равняться :)
        Stanislavsky
        25 февраля 2019, 09:10
        0
        Генерация excel файла по средствам phpspreadsheet?
        Stanislavsky
        27 марта 2019, 12:29
        0
        Привет, посмотри вопрос по твоему компоненту. Вот здесь
          Stanislavsky
          02 апреля 2019, 17:51
          0
          Андрей, планируется функционал сортировки? Вот сейчас задача встала, чтобы после создания файла данные в файле были отсортированы по имени
            Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
            9