msPriceList

Управление прайс-листами minishop2
Автор дополнения
Alexey Naumov
Пакетов
9
Закачек
7 040
Обычно отвечает в течение суток
Автор дополнения
Пакетов
9
Закачек
7 040
Обычно отвечает в течение суток
Версия 1.0.2-beta
Дата выпуска 08.11.2022
Загрузки 23
Просмотры 6 739
Экспорт прайс-листов в 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 руб.
  • Выделить текст жирным


Настройки


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


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


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

Событие 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);


Событие msPriceListBeforeSetColumn
Форматирование значений для прайс листа
// Запись значений колонок
    $response = $this->invokeEvent('msPriceListBeforeSetColumn', array(
            'column' => $column,
            'resource' => $resource,
        ));
        if (!$response['success']) {
            return $response['message'];
        }
        $column = $response['data']['column'];

        // Запись значений колонок
        $column_key = $column['column_key'];
        $column_field = $column['column_field'];
        $column_value = $column['column_value'];
        $column_horizontal = $column['column_horizontal'];
        $column_vertical = $column['column_vertical'];
        $column_bold = $column['column_bold'];
        $column_lexicon = $column['column_lexicon'];
создаем плагин с событием
/** @var modX $modx */
switch ($modx->event->name) {
    case 'msPriceListBeforeSetColumn':
        /** @var array $scriptProperties */
        /* @var array $column */
        $resource = $scriptProperties['resource'];
        $colump = $scriptProperties['column'];

        if ($colump['column_field'] == 'color') {
            $column['column_field'] = '';
            $column['column_value'] = !empty($resource['color']) ? implode(',',$resource['color']) : '';
            $modx->event->returnedValues['column'] = $column;
        }

    break;
}

1.0.2-beta

  • Исправлен баг с родительской категорией

Последние обсуждения в сообществе MODX.pro